Open In Colab

Konwolucyjne sieci neuronowe¶

Dziś spróbujemy stworzyć i wytrenować prostą sieć konwolucyjną do rozpoznawania, co znajduje się na obrazie. Następnie omówimy kwestię identyfikowania obiektów na obrazie, oraz porozmawiamy o wykorzystaniu gotowej już sieci.

Problem klasyfikacji obrazów¶

Jak się za to zabrać? Naiwnym podejściem byłaby próba ręcznej specyfikacji pewnych cech (niemowlęta mają duże głowy, szczoteczki są długie, etc.). Szybko jednak stwierdziliśmy, że nawet dla niewielkiego zbioru kategorii jest to tytaniczna praca bez gwarancji sukcesu. Co więcej, istnieje wiele czynników zniekształcających zawartość naszych zdjęć. Obiekty mogą być przedstawiane z różnych ujęć, w różnych warunkach oświetleniowych, w różnej skali, częściowo niewidoczne, ukryte w tle...

obraz.png

Wszystkie wymienione problemy są skutkiem istnienia semantycznej przepaści między tym, jak reprezentowane są nasze dane wejściowe (tablica liczb), a tym, czego w nich szukamy, czyli kategorii i cech: zwierząt, nosów, głów, itp. Zamiast więc próbować samodzielnie napisać funkcję $f(x)$, spróbujemy skorzystać z dobrodziejstw uczenia maszynowego, aby automatycznie skonstruować reprezentację wejścia właściwą dla postawionego sobie zadania (a przynajmniej lepszą od pierwotnej). I tu z pomocą przychodzą nam konwolucyjne sieci neuronowe. Do tego trzeba zrozumieć, czym jest konwolucja (inaczej: splot), a do tego najlepiej nadają się ilustracje, jak to działa.

Konwolucja¶

Konwolucja (splot) to działanie określone dla dwóch funkcji, dające w wyniku inną, która może być postrzegana jako zmodyfikowana wersja oryginalnych funkcji.

Z naszego punktu widzenia polega to na tym, że mnożymy odpowiadające sobie elementy z dwóch macierzy: obrazu, oraz mniejszej, nazywanej filtrem (lub kernelem. Następnie sumujemy wynik i zapisujemy do macierzy wynikowej na odpowiedniej pozycji. Proces powtarza się aż do momentu przeskanowania całego obrazu. Taki filtr wykrywa, czy coś do niego pasuje w danym miejscu, i z tego wynika zdolność semantycznej generalizacji sieci - uczymy się cech, a wykrywamy je potem w dowolnym miejscu. Przydatne pojęcia

1 Zx-ZMLKab7VOCQTxdZ1OAw.gif

Stride¶

Stride to inaczej krok algorytmu, albo przesunięcie. Określa co ile komórek macierzy następuje aplikacja operatora konwolucji. Jeśli stride wynosi 1 a operator konwolucji ma rozmiar np. 3 x 3, to każdy piksel (z wyjątkiem skrajnych narożnych pikseli) będzie uczestniczył w wielu operacjach konwolucji. Jeśli natomiast krok wyniósłby 3, to każdy piksel uczestniczyłby tylko jednokrotnie w tych operacjach. Należy pamiętać, że krok stosujemy zarówno w poziomie, jak i pionie. Najczęściej w obu kierunkach wykorzystuje się ten sam krok.

1 BMngs93_rm2_BpJFH2mS0Q.gif

Padding¶

Padding to inaczej wypełnienie krawędzi obrazu. Określa, w jaki sposób będą traktowane skrajne piksele. Jeśli padding wynosi 0, to skrajne piksele będą uczestniczyły w operacjach konwolucji rzadziej, niż pozostałe piksele (oczywiście jest to również uzależnione od wartości kroku). Aby zniwelować ten efekt, możemy dodać wypełnienie wokół całego obrazu. Te dodatkowe piksele mogą być zerami, albo mogą być również jakimiś uśrednionymi wartościami pikseli sąsiednich. Wypełnienie zerami oznacza de facto obramowanie całego obrazu czarną ramkną.

Więcej na temat wypełnienia.

1 1okwhewf5KCtIPaFib4XaA.gif

Pooling¶

Pooling jest procesem wykorzystywanym do redukcji rozmiaru obrazu. Występują 2 warianty: max-pooling oraz avg-pooling. Pozwala on usunąć zbędne dane, np. jeżeli filtr wykrywa linie, to istnieje spora szansa, że linie te ciągną się przez sąsiednie piksele, więc nie ma powodu powielać tej informacji. Dzięki temu wprowadzamy pewną inwariancję w wagach sieci i jesteśmy odporni na niewielkie wahania lokalizacji informacji, a skupiamy się na "większym obrazie".

11.gif

Sposoby redukcji przeuczenia¶

  • warstwa dropout - wyłączanie losowych neuronów w trakcie uczenia,
  • regularyzacja wag - ograniczenie sumy wartości wag,
  • metoda wczesnego stopu (early stopping) - zatrzymanie uczenia, jeśli proces uczenia nie poprawia wyników,
  • normalizacja paczki (batch normalization) - centrowanie i skalowanie wartości wektorów w obrębie batcha danych,
  • rozszerzanie danych (data augmentation) - generowanie lekko zaburzonych danych, na podstawie danych treningowych,
  • lub... więcej danych.

Budowa sieci CNN do klasyfikacji obrazów¶

Sieć konwolucyjna składa się zawsze najpierw, zgodnie z nazwą, z części konwolucyjnej, której zadaniem jest wyodrębnienie przydatnych cech z obrazu za pomocą filtrów, warstw poolingowych etc.

Warstwa konwolucyjna sieci neuronowej składa się z wielu filtrów konwolucyjnych działających równolegle (tj. wykrywających różne cechy). Wagi kerneli, początkowo zainicjalizowane losowo, są dostrajane w procesie uczenia. Wynik działania poszczególnych filtrów jest przepuszczany przez funkcję nieliniową. Mamy tu do czynienia z sytuacją analogiczną jak w MLP: najpierw wykonujemy przekształcenie liniowe, a potem stosujemy funkcję aktywacji. Funkcji aktywacji nie stosuje się jendak po warstawch poolingowych, są to stałe operacje nie podlegające uczeniu.

W celu klasyfikacji obrazu musimy później użyć sieci MLP. Jako że wejściem do sieci MLP jest zawsze wektor, a wyjściem warstwy konwolucyjnej obraz. Musimy zatem obraz przetworzony przez filtry konwolucyjne sprowadzić do formy wektora, tzw. embedding-u / osadzenia, czyli reprezentacji obrazu jako punktu w pewnej ciągłej przestrzeni. Służy do tego warstwa spłaszczająca (flatten layer), rozwijająca macierze wielkowymiarowe na wektor, np $10 \times 10 \times 3$ na $300 \times 1$.

Część konwolucyjna nazywa się często backbone, a część MLP do klasyfikacji head. Głowa ma zwykle 1-2 warstwy w pełni połączone, z aktywacją softmax w ostatniej warstwie. Czasem jest nawet po prostu pojedynczą warstwą z softmaxem, bo w dużych sieciach konwolucyjnych ekstrakcja cech jest tak dobra, że taka prosta konstrukcja wystacza do klasyfikacji embeddingu.

In [3]:
import torch
import torchvision
import torchvision.transforms as transforms

Wybierzmy rodzaj akceleracji. Współczesne wersje PyTorch wspierają akcelerację nie tylko na kartach Nvidii i AMD, ale również na procesorach Apple z serii M. Obsługa AMD jest realizowana identycznie jak CUDA natomiast MPS (Apple) ma nieco inne API do sprawdzania dostępności i wybierania urządzenia. Zapisujemy wybrane urządzenie do zmiennej device, dzięki czemu w dalszych częściach kodu już nie będziemy musieli o tym myśleć.

In [4]:
if torch.cuda.is_available():
    device = torch.device("cuda:0")
elif torch.backends.mps.is_available():
    device = torch.device("mps")

print(device)
cuda:0

W pakiecie torchvision mamy funkcje automatycznie pobierające niektóre najbardziej popularne zbiory danych z obrazami.

W tym ćwiczeniu wykorzystamy zbiór FashionMNIST, który zawiera małe (28x28) zdjęcia ubrań w skali szarości. Zbiór ten został stworzony przez Zalando i jest "modowym" odpowiednikiem "cyferkowego" MNIST-a, jest z nim kompatybilny pod względem rozmiarów i charakterystyki danych, ale jest od MNIST-a trudniejszy w klasyfikacji.

Do funkcji ładujących zbiory danych możemy przekazać przekształcenie, które powinno zostać na nim wykonane. Przekształcenia można łączyć przy użyciu transforms.Compose. W tym przypadku przekonwertujemy dane z domyślnej reprezentacji PIL.Image na torch-owe tensory.

Pobrany dataset przekazujemy pod kontrolę DataLoader-a, który zajmuje się podawaniem danych w batch-ach podczas treningu.

In [5]:
transform = transforms.Compose([transforms.ToTensor()])

batch_size = 32

trainset = torchvision.datasets.FashionMNIST(
    root="./data", train=True, download=True, transform=transform
)
trainloader = torch.utils.data.DataLoader(
    trainset, batch_size=batch_size, shuffle=True
)

testset = torchvision.datasets.FashionMNIST(
    root="./data", train=False, download=True, transform=transform
)
testloader = torch.utils.data.DataLoader(
    testset, batch_size=batch_size, shuffle=True
)

classes = (
    "top",
    "Trouser",
    "Pullover",
    "Dress",
    "Coat",
    "Sandal",
    "Shirt",
    "Sneaker",
    "Bag",
    "Ankle boot",
)

print(type(testset[0][0]))
Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz
Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz to ./data/FashionMNIST/raw/train-images-idx3-ubyte.gz
100%|██████████| 26.4M/26.4M [00:01<00:00, 17.9MB/s]
Extracting ./data/FashionMNIST/raw/train-images-idx3-ubyte.gz to ./data/FashionMNIST/raw

Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz
Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz to ./data/FashionMNIST/raw/train-labels-idx1-ubyte.gz
100%|██████████| 29.5k/29.5k [00:00<00:00, 308kB/s]
Extracting ./data/FashionMNIST/raw/train-labels-idx1-ubyte.gz to ./data/FashionMNIST/raw

Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz
Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz to ./data/FashionMNIST/raw/t10k-images-idx3-ubyte.gz
100%|██████████| 4.42M/4.42M [00:00<00:00, 5.60MB/s]
Extracting ./data/FashionMNIST/raw/t10k-images-idx3-ubyte.gz to ./data/FashionMNIST/raw

Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz
Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz to ./data/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz
100%|██████████| 5.15k/5.15k [00:00<00:00, 21.7MB/s]
Extracting ./data/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz to ./data/FashionMNIST/raw

<class 'torch.Tensor'>

Zobaczmy, co jest w naszym zbiorze danych. Poniżej kawałek kodu, który wyświetli nam kilka przykładowych obrazków. Wartości pikseli są znormalizowane do przedziału [0,1].

In [6]:
import matplotlib.pyplot as plt
import numpy as np


def imshow(img):
    npimg = img.numpy()
    plt.imshow(np.transpose(npimg, (1, 2, 0)))
    plt.axis("off")
    plt.show()


dataiter = iter(trainloader)
images, labels = next(dataiter)

def grid_show(images, nrow=8):
    imshow(torchvision.utils.make_grid(images, nrow=nrow))


def print_grid(labels, nrow=8):
    rows = [labels[n : n + nrow] for n in range(0, len(labels), nrow)]
    for r in rows:
        print(" ".join(f"{classes[c]:10s}" for c in r))

grid_show(images)
print_grid(labels)
No description has been provided for this image
Trouser    Trouser    Dress      Sandal     Pullover   Coat       Pullover   Ankle boot
Bag        Coat       Trouser    top        Sandal     Bag        Shirt      Bag       
Sneaker    Sneaker    top        Sneaker    Pullover   Sandal     Bag        Dress     
Pullover   Trouser    Bag        Sneaker    Shirt      Shirt      Coat       Shirt     

LeNet¶

LeNet to bardzo znany, klasyczny model sieci konwolucyjnej.

Warstwy:

  • obraz
  • konwolucja, kernel $5 \times 5$, bez paddingu, 6 kanałów (feature maps)
  • average pooling, kernel $2 \times 2$, stride 2
  • konwolucja, kernel $5 \times 5$, bez paddingu, 16 kanałów (feature maps)
  • average pooling, kernel $2 \times 2$, stride 2
  • warstwa w pełni połączona, 120 neuronów na wyjściu
  • warstwa w pełni połączona, 84 neurony na wyjściu
  • warstwa w pełni połączona, na wyjściu tyle neuronów, ile jest klas

Zadanie 1 (2 punkty)¶

Zaimplementuj wyżej opisaną sieć, używając biblioteki PyTorch. Wprowadzimy sobie jednak pewne modyfikacje, żeby było ciekawiej:

  • w pierwszej warstwie konwolucyjnej użyj 20 kanałów (feature maps)
  • w drugiej warstwie konwolucyjnej użyj 50 kanałów (feature maps)
  • w pierwszej warstwie gęstej użyj 300 neuronów
  • w drugiej warstwie gęstej użyj 100 neuronów

Przydatne elementy z pakietu torch.nn:

  • Conv2d()
  • AvgPool2d()
  • Linear()

Z pakietu torch.nn.functional:

  • relu()

Komentarz:¶

To jest błąd? naturalnie z polecenia wynikało dla mnie, że mamy zaimplementowac sieć, która w Headzie ma 300 neuronów w pierwszej warstwie i 100 w drugiej. O co w końcu chodzi?

In [7]:
import torch.nn as nn
import torch.nn.functional as F


'''
start: 28 x 28
1st Conv:  20 x 24 x 24  (20 feature maps, 28 - 5 + 1 = 24, 5 = kernel size, 28 = startdim )
1st AvgPool: 20 x 12 x 12 (24/2 = 12,  kernal size for pool is 2 with stride 2)
2nd Conv: 50  x 8 x 8 (50 feature maps, 12 - 5 +1 = 8, 5 = kernel size, 12 = earlier dim)
2nd AvgPool: 50 x 4 x 4 (8/2=4, kernel size for pool is 2 with stride 2)
Flatten: 800 (50*4*4=800)
'''
class LeNet(nn.Module):
    def __init__(self):
        super().__init__()
        # your code here
        class_num = len(classes)
        self.model = nn.Sequential(
            nn.Conv2d(1,20,5),
            nn.ReLU(),
            nn.AvgPool2d(2,2),
            nn.Conv2d(20,50,5),
            nn.ReLU(),
            nn.AvgPool2d(2,2),
            nn.Flatten(),
            #nn.Linear(800,300),
            nn.Linear(800,120),
            nn.ReLU(),
            #nn.Linear(300,100),
            nn.Linear(120,84),
            nn.ReLU(),
            #nn.Linear(100,class_num)
            nn.Linear(84,class_num)
        )


    def forward(self, x):
        return self.model(x)


# your_code
In [8]:
lenet = LeNet()
param_num = sum(p.numel() for p in lenet.parameters())

assert param_num == 132704
print("Solution is correct!")
Solution is correct!

Do treningu użyjemy stochastycznego spadku po gradiencie (SGD), a jako funkcję straty Categorical Cross Entropy. W PyTorch-u funkcja ta operuje na indeksach klas (int), a nie na wektorach typu one-hot (jak w Tensorflow).

In [9]:
import torch.optim as optim

net = LeNet().to(device)

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

Zadanie 2 (1 punkt)¶

Uzupełnij pętlę uczącą sieć na podstawie jej predykcji. Oblicz (wykonaj krok do przodu) funkcję straty, a następnie przeprowadź propagację wsteczną i wykonaj krok optymalizatora.

In [10]:
net.train()

for epoch in range(5):
    net.train()
    for X_batch, y_batch in trainloader:
        X_batch = X_batch.to(device) #moving data to GPU from CPU
        y_batch = y_batch.to(device)

        y_pred = net(X_batch)
        loss = criterion(y_pred, y_batch)
        loss.backward()
        optimizer.step()
        optimizer.zero_grad()

Zobaczmy na kilku przykładach jak działa wytrenowana sieć.

In [11]:
dataiter = iter(testloader)
images, labels = next(dataiter)

grid_show(images)
print("Ground Truth")
print_grid(labels)

outputs = net(images.to(device))
_, predicted = torch.max(outputs, 1)

print()
print("Predicted")
print_grid(predicted)
No description has been provided for this image
Ground Truth
top        Coat       Ankle boot Bag        Trouser    Coat       Shirt      top       
Ankle boot Sneaker    Coat       Pullover   Coat       Pullover   Sandal     top       
Sandal     Bag        Bag        Pullover   top        Sandal     Dress      Coat      
Trouser    Trouser    Trouser    Sandal     Sandal     Shirt      Pullover   Shirt     

Predicted
top        Coat       Ankle boot Sneaker    Trouser    Coat       top        top       
Ankle boot Sneaker    Coat       Pullover   Coat       Pullover   Sandal     top       
Sandal     Bag        Bag        Pullover   Dress      Sandal     Dress      Coat      
Trouser    Trouser    Dress      Sandal     Sandal     top        Pullover   Pullover  

Obliczmy dokładności (accuracy) dla zbioru danych.

In [12]:
correct = 0
total = 0
net.eval()
with torch.no_grad():
    for data in testloader:
        images, labels = data
        outputs = net(images.to(device))
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels.to(device)).sum().item()

print(f"Accuracy of the network on the 10000 test images: {100 * correct // total} %")
Accuracy of the network on the 10000 test images: 81 %

Skomentuj wyniki:

81% to całkiem dobry wynik, jednak pewnie da się go poprawić. Weźmy pod uwage, że działamy na stosunkowo małych obrazkach. Po próbnym wypisaniu, widzimy też, że siec najprawodpodobniej ma problemy, gdy przedmioty są "podobne" tzn po ludzku należą do jednej szerszej kategorii ubrań np. Shirt/Top albo Shirt/Coat albo Sandal/Ankle Boot. To też zależy od tego do czego wykorzystujemy naszą sieć, ale prawdopodobnie cieszy (a na pewno mniej dziwi) taka charakterystyka błędów niż mylenie butów z odzieniem wierzchnim.

Znając ogólny wynik klasyfikacji dla zbioru przeanalizujmy dokładniej, z którymi klasami jest największy problem.

Zadanie 3 (1 punkt)¶

Oblicz dokładność działania sieci (accuracy) dla każdej klasy z osobna. Podczas oceniania skuteczności modelu nie potrzebujemy, aby gradienty się liczyły. Możemy zatem zawrzeć obliczenia w bloku with torch.no_grad():

In [13]:
num_classes =  len(classes)
class_correct = {cls: 0 for cls in range(num_classes)}
class_total = {cls: 0 for cls in range(num_classes)}
net.eval()
with torch.no_grad():
    for data in testloader:
        images, labels = data
        images, labels = images.to(device), labels.to(device)
        outputs = net(images)
        _, predicted = torch.max(outputs.data, 1)

        for label, pred in zip(labels, predicted):
            class_total[label.item()] += 1
            if label == pred:
                class_correct[label.item()] += 1

accuracies = [(class_correct[i] / class_total[i]) * 100 if class_total[i] else 0
              for i in range(num_classes)]

plt.figure(figsize=(10, 6))
plt.bar(classes, accuracies, color='skyblue')
plt.xlabel('Classes')
plt.ylabel('Accuracy')
plt.title('Accuracy for Each Class')
plt.show()
No description has been provided for this image

Skomentuj wyniki:

Widać różnorodnosć skuteczności dla poszczególnych klas. Szczególnie widoczna dysproporcja zachodzi dla klasy 'Shirt' i klasy 'Pullover'. Prawdopodobnie je wzajemnie ze sobą miesza, ponieważ oba typy mają podobną strukture. Dodając do tego fakt, że mamy obrazki w skali szarości, wydaje się naturalne, że sieć nie radzi sobie z tymi obiekatmi zbyt dobrze.

Detekcja obiektów¶

Problem detekcji polega na nie tylko sklasyfikowaniu obiektów na obrazie, ale również wyznaczeniu jego dokładnego położenia w postaci bounding-box-u. Choć jest to problem odmienny od klasyfikacji obrazów, to w praktyce ściśle z nim powiązany - modele do detekcji obiektów przeważnie do pewnego momentu wyglądają tak samo, jak modele klasyfikacji. Jednak pod koniec sieć jest dzielona na 2 wyjścia: jedno to standardowa klasyfikacja, a drugie to regresor określający pozycję obiektu na obrazie, tzw. bounding box. Najpopularniejszymi przykładami takich sieci są YOLO i Mask R-CNN. Zbiór danych też jest odpowiednio przygotowany do tego zadania i oprócz właściwych zdjęć zawiera również listę bounding-box-ów i ich etykiety.

Zobaczymy jak działa detekcja na przykładzie już wytrenowanej sieci neuronowej. Autorzy skutecznych sieci często udostępniają ich wagi online, dzięki czemu jeżeli mamy doczynienia z analogicznym problemem jak ten, do którego dana sieć była przygotowana możemy z niej skorzystać "prosto z pudełka".

PyTorch pozwala nam na pobranie wytrenowanych wag dla kilku najpopularniejszych modeli. Sprawdzimy jak z tego skorzystać.

In [14]:
from torchvision.models import detection
import numpy as np
import cv2
from PIL import Image
import urllib

Poniżej znajduje się funkcja pozwalająca wczytać obraz z sieci. Przyda się do testowania działania sieci.

In [15]:
def url_to_image(url):
    resp = urllib.request.urlopen(url)
    image = np.asarray(bytearray(resp.read()), dtype="uint8")
    image = cv2.imdecode(image, cv2.IMREAD_COLOR)
    return image

Model, którym się zajmiemy to Faster R-CNN, który był trenowany na zbiorze COCO. Poniżej znajduje się lista klas (etykiet) dla tego zbioru danych.

In [16]:
classes = [
    "__background__",
    "person",
    "bicycle",
    "car",
    "motorcycle",
    "airplane",
    "bus",
    "train",
    "truck",
    "boat",
    "traffic light",
    "fire hydrant",
    "street sign",
    "stop sign",
    "parking meter",
    "bench",
    "bird",
    "cat",
    "dog",
    "horse",
    "sheep",
    "cow",
    "elephant",
    "bear",
    "zebra",
    "giraffe",
    "hat",
    "backpack",
    "umbrella",
    "handbag",
    "tie",
    "shoe",
    "eye glasses",
    "suitcase",
    "frisbee",
    "skis",
    "snowboard",
    "sports ball",
    "kite",
    "baseball bat",
    "baseball glove",
    "skateboard",
    "surfboard",
    "tennis racket",
    "bottle",
    "plate",
    "wine glass",
    "cup",
    "fork",
    "knife",
    "spoon",
    "bowl",
    "banana",
    "apple",
    "sandwich",
    "orange",
    "broccoli",
    "carrot",
    "hot dog",
    "pizza",
    "donut",
    "cake",
    "chair",
    "couch",
    "potted plant",
    "bed",
    "mirror",
    "dining table",
    "window",
    "desk",
    "toilet",
    "door",
    "tv",
    "laptop",
    "mouse",
    "remote",
    "keyboard",
    "cell phone",
    "microwave",
    "oven",
    "toaster",
    "sink",
    "refrigerator",
    "blender",
    "book",
    "clock",
    "vase",
    "scissors",
    "teddy bear",
    "hair drier",
    "toothbrush",
]

colors = np.random.randint(0, 256, size=(len(classes), 3))

Inizjalizacja modelu ResNet50-FPN wytrenowanymi wagami. Inicjalizujemy zarówno sieć backbone jak i RCNN.

In [17]:
model = detection.fasterrcnn_resnet50_fpn(
    weights=detection.FasterRCNN_ResNet50_FPN_Weights.DEFAULT,
    weights_backbone=torchvision.models.ResNet50_Weights.DEFAULT,
    progress=True,
    num_classes=len(classes)
).to(device)
model.eval()
Downloading: "https://download.pytorch.org/models/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth" to /root/.cache/torch/hub/checkpoints/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth
100%|██████████| 160M/160M [00:01<00:00, 163MB/s]
Out[17]:
FasterRCNN(
  (transform): GeneralizedRCNNTransform(
      Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
      Resize(min_size=(800,), max_size=1333, mode='bilinear')
  )
  (backbone): BackboneWithFPN(
    (body): IntermediateLayerGetter(
      (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
      (bn1): FrozenBatchNorm2d(64, eps=0.0)
      (relu): ReLU(inplace=True)
      (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
      (layer1): Sequential(
        (0): Bottleneck(
          (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(64, eps=0.0)
          (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(64, eps=0.0)
          (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(256, eps=0.0)
          (relu): ReLU(inplace=True)
          (downsample): Sequential(
            (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (1): FrozenBatchNorm2d(256, eps=0.0)
          )
        )
        (1): Bottleneck(
          (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(64, eps=0.0)
          (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(64, eps=0.0)
          (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(256, eps=0.0)
          (relu): ReLU(inplace=True)
        )
        (2): Bottleneck(
          (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(64, eps=0.0)
          (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(64, eps=0.0)
          (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(256, eps=0.0)
          (relu): ReLU(inplace=True)
        )
      )
      (layer2): Sequential(
        (0): Bottleneck(
          (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(128, eps=0.0)
          (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(128, eps=0.0)
          (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(512, eps=0.0)
          (relu): ReLU(inplace=True)
          (downsample): Sequential(
            (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)
            (1): FrozenBatchNorm2d(512, eps=0.0)
          )
        )
        (1): Bottleneck(
          (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(128, eps=0.0)
          (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(128, eps=0.0)
          (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(512, eps=0.0)
          (relu): ReLU(inplace=True)
        )
        (2): Bottleneck(
          (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(128, eps=0.0)
          (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(128, eps=0.0)
          (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(512, eps=0.0)
          (relu): ReLU(inplace=True)
        )
        (3): Bottleneck(
          (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(128, eps=0.0)
          (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(128, eps=0.0)
          (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(512, eps=0.0)
          (relu): ReLU(inplace=True)
        )
      )
      (layer3): Sequential(
        (0): Bottleneck(
          (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(256, eps=0.0)
          (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(256, eps=0.0)
          (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(1024, eps=0.0)
          (relu): ReLU(inplace=True)
          (downsample): Sequential(
            (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)
            (1): FrozenBatchNorm2d(1024, eps=0.0)
          )
        )
        (1): Bottleneck(
          (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(256, eps=0.0)
          (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(256, eps=0.0)
          (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(1024, eps=0.0)
          (relu): ReLU(inplace=True)
        )
        (2): Bottleneck(
          (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(256, eps=0.0)
          (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(256, eps=0.0)
          (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(1024, eps=0.0)
          (relu): ReLU(inplace=True)
        )
        (3): Bottleneck(
          (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(256, eps=0.0)
          (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(256, eps=0.0)
          (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(1024, eps=0.0)
          (relu): ReLU(inplace=True)
        )
        (4): Bottleneck(
          (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(256, eps=0.0)
          (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(256, eps=0.0)
          (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(1024, eps=0.0)
          (relu): ReLU(inplace=True)
        )
        (5): Bottleneck(
          (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(256, eps=0.0)
          (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(256, eps=0.0)
          (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(1024, eps=0.0)
          (relu): ReLU(inplace=True)
        )
      )
      (layer4): Sequential(
        (0): Bottleneck(
          (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(512, eps=0.0)
          (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(512, eps=0.0)
          (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(2048, eps=0.0)
          (relu): ReLU(inplace=True)
          (downsample): Sequential(
            (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)
            (1): FrozenBatchNorm2d(2048, eps=0.0)
          )
        )
        (1): Bottleneck(
          (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(512, eps=0.0)
          (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(512, eps=0.0)
          (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(2048, eps=0.0)
          (relu): ReLU(inplace=True)
        )
        (2): Bottleneck(
          (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): FrozenBatchNorm2d(512, eps=0.0)
          (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (bn2): FrozenBatchNorm2d(512, eps=0.0)
          (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): FrozenBatchNorm2d(2048, eps=0.0)
          (relu): ReLU(inplace=True)
        )
      )
    )
    (fpn): FeaturePyramidNetwork(
      (inner_blocks): ModuleList(
        (0): Conv2dNormActivation(
          (0): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1))
        )
        (1): Conv2dNormActivation(
          (0): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1))
        )
        (2): Conv2dNormActivation(
          (0): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
        )
        (3): Conv2dNormActivation(
          (0): Conv2d(2048, 256, kernel_size=(1, 1), stride=(1, 1))
        )
      )
      (layer_blocks): ModuleList(
        (0-3): 4 x Conv2dNormActivation(
          (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
        )
      )
      (extra_blocks): LastLevelMaxPool()
    )
  )
  (rpn): RegionProposalNetwork(
    (anchor_generator): AnchorGenerator()
    (head): RPNHead(
      (conv): Sequential(
        (0): Conv2dNormActivation(
          (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
          (1): ReLU(inplace=True)
        )
      )
      (cls_logits): Conv2d(256, 3, kernel_size=(1, 1), stride=(1, 1))
      (bbox_pred): Conv2d(256, 12, kernel_size=(1, 1), stride=(1, 1))
    )
  )
  (roi_heads): RoIHeads(
    (box_roi_pool): MultiScaleRoIAlign(featmap_names=['0', '1', '2', '3'], output_size=(7, 7), sampling_ratio=2)
    (box_head): TwoMLPHead(
      (fc6): Linear(in_features=12544, out_features=1024, bias=True)
      (fc7): Linear(in_features=1024, out_features=1024, bias=True)
    )
    (box_predictor): FastRCNNPredictor(
      (cls_score): Linear(in_features=1024, out_features=91, bias=True)
      (bbox_pred): Linear(in_features=1024, out_features=364, bias=True)
    )
  )
)

IPython, z którego korzystamy w Jupyter Notebooku, ma wbudowaną funkcję display() do wyświetlania obrazów.

Do pobierania obrazów możemy się posłyżyć wget-em.

In [19]:
# Pobieranie obrazka z sieci
!wget https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Toothbrush_x3_20050716_001.jpg/1280px-Toothbrush_x3_20050716_001.jpg --output-document toothbrushes.jpg
--2024-12-10 17:36:35--  https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Toothbrush_x3_20050716_001.jpg/1280px-Toothbrush_x3_20050716_001.jpg
Resolving upload.wikimedia.org (upload.wikimedia.org)... 208.80.153.240, 2620:0:860:ed1a::2:b
Connecting to upload.wikimedia.org (upload.wikimedia.org)|208.80.153.240|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 339825 (332K) [image/jpeg]
Saving to: ‘toothbrushes.jpg’

toothbrushes.jpg    100%[===================>] 331.86K  1.98MB/s    in 0.2s    

2024-12-10 17:36:35 (1.98 MB/s) - ‘toothbrushes.jpg’ saved [339825/339825]

In [20]:
# Wyświetlanie obrazka
image = Image.open("toothbrushes.jpg")
# make sure we have 3-channel RGB, e.g. without transparency
image = image.convert("RGB")
display(image)
No description has been provided for this image

PyTorch wymaga obrazów w kształcie [channels, height, width] (C, H, W) oraz z wartościami pikseli między 0 a 1. Pillow wczytuje obrazy z kanałami (H, W, C) oraz z wartościami pikseli między 0 a 255. Przed wykorzystaniem sieci neuronowej trzeba zatem:

  • zamienić obraz na tensor
  • zmienić kolejność kanałów
  • podzielić wartości pikseli przez 255
In [21]:
image_tensor = torch.from_numpy(np.array(image))
image_tensor = image_tensor.permute(2, 0, 1)
image_tensor_int = image_tensor  # useful for displaying, dtype = uint8
image_tensor = image_tensor / 255
image_tensor.shape, image_tensor.dtype
Out[21]:
(torch.Size([3, 960, 1280]), torch.float32)

Zadanie 4 (1 punkt)¶

Użyj modelu do wykrycia obiektów na obrazie. Następnie wybierz tylko te bounding boxy, dla których mamy wynik powyżej 50%. Wypisz te bounding boxy, ich prawdopodobieństwa (w procentach) oraz nazwy klas.

Następnie wykorzystaj wyniki do zaznaczenia bounding box'a dla każdego wykrytego obiektu na obrazie oraz podpisz wykrytą klasę wraz z prawdopodobieństwem. Możesz tutaj użyć:

  • OpenCV
  • PyTorch - Torchvision
In [22]:
outputs = model(image_tensor.unsqueeze(0).to(device))
boxes = outputs[0]['boxes'].detach().cpu().numpy()
pred_scores = outputs[0]['scores'].detach().cpu().numpy()
labels = outputs[0]['labels'].detach().cpu().numpy()

boxes = boxes[pred_scores > 0.5]
scores = pred_scores[pred_scores > 0.5]
classnames = np.array(classes)[labels[pred_scores > 0.5].astype(np.int32)]
image_labeled = np.array(pred_scores > 0.5)
image_labeled = np.array(image, dtype=np.uint8)

for box, score, classname in zip(boxes, scores, classnames):
    x1, y1, x2, y2 = box.astype(int)
    cv2.rectangle(image_labeled, (x1, y1), (x2, y2), color=(100, 0, 255), thickness=3)

for box, score, classname in zip(boxes, scores, classnames):
    x1, y1, _, _ = box.astype(int)
    text = f"Class name: {classname} with probability: {score * 100:.2f}%"
    cv2.putText(image_labeled, text, (x1 + 10, y1 - 20), fontFace=0, fontScale=1, color=(255, 100, 0), thickness=2)

plt.figure(figsize=(10, 20))
plt.imshow(image_labeled)
plt.axis('off')
plt.show()
No description has been provided for this image

Fine-tuning i pretrening¶

Trenowanie głębokich sieci neuronowych do przetwarzania obrazów jest zadaniem wymagającym bardzo dużych zbiorów danych i zasobów obliczeniowych. Często jednak, nie musimy trenować takich sieci od nowa, możemy wykorzystać wytrenowane modele i jedynie dostosowywaać je do naszych problemów. Działanie takie nazywa się transfer learning-iem.

Przykładowao: mamy już wytrenowaną sieć na dużym zbiorze danych (pretrening) i chcemy, żeby sieć poradziła sobie z nową klasą obiektów (klasyfikacja), albo lepiej radziła sobie z wybranymi obiektami, które już zna (fine-tuning). Możemy usunąć ostatnią warstwę sieci i na jej miejsce wstawić nową, identyczną, jednak z losowo zainicjalizowanymi wagami, a następnie dotrenować sieć na naszym nowym, bardziej specyficznym zbiorze danych. Przykładowo, jako bazę weźmiemy model wytrenowany na zbiorze ImageNet i będziemy chcieli użyć go do rozpoznawania nowych, nieznanych mu klas, np. ras psów.

Dla przećwiczenia takiego schematu działania wykorzystamy zbiór danych z hotdogami. Będziemy chcieli stwierdzić, czy na obrazku jest hotdog, czy nie. Jako sieci użyjemy modelu ResNet-18, pretrenowanej na zbiorze ImageNet.

In [23]:
# Download the hotdog dataset
!wget http://d2l-data.s3-accelerate.amazonaws.com/hotdog.zip
!unzip -n hotdog.zip
--2024-12-10 17:37:05--  http://d2l-data.s3-accelerate.amazonaws.com/hotdog.zip
Resolving d2l-data.s3-accelerate.amazonaws.com (d2l-data.s3-accelerate.amazonaws.com)... 52.85.83.120
Connecting to d2l-data.s3-accelerate.amazonaws.com (d2l-data.s3-accelerate.amazonaws.com)|52.85.83.120|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 261292301 (249M) [application/zip]
Saving to: ‘hotdog.zip’

hotdog.zip          100%[===================>] 249.19M  51.9MB/s    in 5.2s    

2024-12-10 17:37:11 (47.6 MB/s) - ‘hotdog.zip’ saved [261292301/261292301]

Archive:  hotdog.zip
   creating: hotdog/
   creating: hotdog/train/
   creating: hotdog/train/not-hotdog/
 extracting: hotdog/train/not-hotdog/50.png  
 extracting: hotdog/train/not-hotdog/554.png  
 extracting: hotdog/train/not-hotdog/299.png  
  inflating: hotdog/train/not-hotdog/428.png  
  inflating: hotdog/train/not-hotdog/475.png  
  inflating: hotdog/train/not-hotdog/933.png  
 extracting: hotdog/train/not-hotdog/677.png  
  inflating: hotdog/train/not-hotdog/284.png  
 extracting: hotdog/train/not-hotdog/728.png  
  inflating: hotdog/train/not-hotdog/667.png  
  inflating: hotdog/train/not-hotdog/912.png  
 extracting: hotdog/train/not-hotdog/406.png  
 extracting: hotdog/train/not-hotdog/333.png  
 extracting: hotdog/train/not-hotdog/837.png  
  inflating: hotdog/train/not-hotdog/295.png  
  inflating: hotdog/train/not-hotdog/274.png  
  inflating: hotdog/train/not-hotdog/307.png  
 extracting: hotdog/train/not-hotdog/343.png  
  inflating: hotdog/train/not-hotdog/399.png  
  inflating: hotdog/train/not-hotdog/618.png  
 extracting: hotdog/train/not-hotdog/358.png  
 extracting: hotdog/train/not-hotdog/122.png  
  inflating: hotdog/train/not-hotdog/119.png  
  inflating: hotdog/train/not-hotdog/645.png  
  inflating: hotdog/train/not-hotdog/231.png  
  inflating: hotdog/train/not-hotdog/488.png  
  inflating: hotdog/train/not-hotdog/603.png  
  inflating: hotdog/train/not-hotdog/911.png  
 extracting: hotdog/train/not-hotdog/328.png  
  inflating: hotdog/train/not-hotdog/277.png  
 extracting: hotdog/train/not-hotdog/820.png  
  inflating: hotdog/train/not-hotdog/463.png  
  inflating: hotdog/train/not-hotdog/361.png  
  inflating: hotdog/train/not-hotdog/832.png  
  inflating: hotdog/train/not-hotdog/693.png  
 extracting: hotdog/train/not-hotdog/239.png  
  inflating: hotdog/train/not-hotdog/606.png  
  inflating: hotdog/train/not-hotdog/871.png  
  inflating: hotdog/train/not-hotdog/560.png  
  inflating: hotdog/train/not-hotdog/334.png  
  inflating: hotdog/train/not-hotdog/405.png  
  inflating: hotdog/train/not-hotdog/251.png  
 extracting: hotdog/train/not-hotdog/14.png  
  inflating: hotdog/train/not-hotdog/829.png  
  inflating: hotdog/train/not-hotdog/12.png  
  inflating: hotdog/train/not-hotdog/400.png  
  inflating: hotdog/train/not-hotdog/312.png  
 extracting: hotdog/train/not-hotdog/762.png  
 extracting: hotdog/train/not-hotdog/789.png  
 extracting: hotdog/train/not-hotdog/137.png  
  inflating: hotdog/train/not-hotdog/472.png  
  inflating: hotdog/train/not-hotdog/995.png  
 extracting: hotdog/train/not-hotdog/359.png  
  inflating: hotdog/train/not-hotdog/389.png  
  inflating: hotdog/train/not-hotdog/971.png  
  inflating: hotdog/train/not-hotdog/607.png  
 extracting: hotdog/train/not-hotdog/282.png  
  inflating: hotdog/train/not-hotdog/526.png  
  inflating: hotdog/train/not-hotdog/936.png  
  inflating: hotdog/train/not-hotdog/197.png  
  inflating: hotdog/train/not-hotdog/362.png  
  inflating: hotdog/train/not-hotdog/713.png  
  inflating: hotdog/train/not-hotdog/220.png  
  inflating: hotdog/train/not-hotdog/747.png  
 extracting: hotdog/train/not-hotdog/97.png  
 extracting: hotdog/train/not-hotdog/126.png  
  inflating: hotdog/train/not-hotdog/996.png  
  inflating: hotdog/train/not-hotdog/327.png  
  inflating: hotdog/train/not-hotdog/438.png  
 extracting: hotdog/train/not-hotdog/540.png  
 extracting: hotdog/train/not-hotdog/109.png  
  inflating: hotdog/train/not-hotdog/611.png  
  inflating: hotdog/train/not-hotdog/292.png  
  inflating: hotdog/train/not-hotdog/926.png  
  inflating: hotdog/train/not-hotdog/814.png  
  inflating: hotdog/train/not-hotdog/967.png  
 extracting: hotdog/train/not-hotdog/683.png  
  inflating: hotdog/train/not-hotdog/952.png  
  inflating: hotdog/train/not-hotdog/776.png  
 extracting: hotdog/train/not-hotdog/592.png  
  inflating: hotdog/train/not-hotdog/68.png  
  inflating: hotdog/train/not-hotdog/910.png  
  inflating: hotdog/train/not-hotdog/754.png  
  inflating: hotdog/train/not-hotdog/236.png  
  inflating: hotdog/train/not-hotdog/847.png  
  inflating: hotdog/train/not-hotdog/206.png  
  inflating: hotdog/train/not-hotdog/180.png  
  inflating: hotdog/train/not-hotdog/413.png  
  inflating: hotdog/train/not-hotdog/681.png  
  inflating: hotdog/train/not-hotdog/287.png  
  inflating: hotdog/train/not-hotdog/242.png  
 extracting: hotdog/train/not-hotdog/836.png  
  inflating: hotdog/train/not-hotdog/145.png  
  inflating: hotdog/train/not-hotdog/490.png  
 extracting: hotdog/train/not-hotdog/130.png  
 extracting: hotdog/train/not-hotdog/269.png  
  inflating: hotdog/train/not-hotdog/189.png  
  inflating: hotdog/train/not-hotdog/207.png  
  inflating: hotdog/train/not-hotdog/94.png  
 extracting: hotdog/train/not-hotdog/378.png  
  inflating: hotdog/train/not-hotdog/341.png  
  inflating: hotdog/train/not-hotdog/73.png  
  inflating: hotdog/train/not-hotdog/709.png  
  inflating: hotdog/train/not-hotdog/375.png  
  inflating: hotdog/train/not-hotdog/993.png  
  inflating: hotdog/train/not-hotdog/4.png  
  inflating: hotdog/train/not-hotdog/796.png  
  inflating: hotdog/train/not-hotdog/342.png  
  inflating: hotdog/train/not-hotdog/881.png  
 extracting: hotdog/train/not-hotdog/165.png  
  inflating: hotdog/train/not-hotdog/509.png  
  inflating: hotdog/train/not-hotdog/150.png  
  inflating: hotdog/train/not-hotdog/196.png  
 extracting: hotdog/train/not-hotdog/534.png  
  inflating: hotdog/train/not-hotdog/642.png  
  inflating: hotdog/train/not-hotdog/152.png  
 extracting: hotdog/train/not-hotdog/434.png  
  inflating: hotdog/train/not-hotdog/953.png  
  inflating: hotdog/train/not-hotdog/308.png  
  inflating: hotdog/train/not-hotdog/682.png  
  inflating: hotdog/train/not-hotdog/595.png  
 extracting: hotdog/train/not-hotdog/662.png  
 extracting: hotdog/train/not-hotdog/619.png  
 extracting: hotdog/train/not-hotdog/719.png  
 extracting: hotdog/train/not-hotdog/437.png  
  inflating: hotdog/train/not-hotdog/752.png  
  inflating: hotdog/train/not-hotdog/671.png  
  inflating: hotdog/train/not-hotdog/469.png  
 extracting: hotdog/train/not-hotdog/83.png  
  inflating: hotdog/train/not-hotdog/462.png  
 extracting: hotdog/train/not-hotdog/452.png  
  inflating: hotdog/train/not-hotdog/455.png  
  inflating: hotdog/train/not-hotdog/115.png  
 extracting: hotdog/train/not-hotdog/163.png  
  inflating: hotdog/train/not-hotdog/395.png  
  inflating: hotdog/train/not-hotdog/266.png  
  inflating: hotdog/train/not-hotdog/605.png  
  inflating: hotdog/train/not-hotdog/772.png  
  inflating: hotdog/train/not-hotdog/346.png  
  inflating: hotdog/train/not-hotdog/423.png  
  inflating: hotdog/train/not-hotdog/88.png  
 extracting: hotdog/train/not-hotdog/703.png  
  inflating: hotdog/train/not-hotdog/587.png  
  inflating: hotdog/train/not-hotdog/448.png  
  inflating: hotdog/train/not-hotdog/44.png  
  inflating: hotdog/train/not-hotdog/741.png  
  inflating: hotdog/train/not-hotdog/698.png  
 extracting: hotdog/train/not-hotdog/262.png  
  inflating: hotdog/train/not-hotdog/181.png  
  inflating: hotdog/train/not-hotdog/61.png  
 extracting: hotdog/train/not-hotdog/893.png  
  inflating: hotdog/train/not-hotdog/561.png  
  inflating: hotdog/train/not-hotdog/245.png  
  inflating: hotdog/train/not-hotdog/412.png  
 extracting: hotdog/train/not-hotdog/157.png  
 extracting: hotdog/train/not-hotdog/102.png  
  inflating: hotdog/train/not-hotdog/612.png  
  inflating: hotdog/train/not-hotdog/640.png  
  inflating: hotdog/train/not-hotdog/76.png  
  inflating: hotdog/train/not-hotdog/914.png  
 extracting: hotdog/train/not-hotdog/799.png  
  inflating: hotdog/train/not-hotdog/161.png  
 extracting: hotdog/train/not-hotdog/748.png  
  inflating: hotdog/train/not-hotdog/940.png  
  inflating: hotdog/train/not-hotdog/117.png  
  inflating: hotdog/train/not-hotdog/446.png  
  inflating: hotdog/train/not-hotdog/857.png  
 extracting: hotdog/train/not-hotdog/77.png  
  inflating: hotdog/train/not-hotdog/229.png  
  inflating: hotdog/train/not-hotdog/965.png  
  inflating: hotdog/train/not-hotdog/511.png  
  inflating: hotdog/train/not-hotdog/786.png  
  inflating: hotdog/train/not-hotdog/248.png  
 extracting: hotdog/train/not-hotdog/192.png  
  inflating: hotdog/train/not-hotdog/521.png  
  inflating: hotdog/train/not-hotdog/541.png  
  inflating: hotdog/train/not-hotdog/241.png  
  inflating: hotdog/train/not-hotdog/147.png  
  inflating: hotdog/train/not-hotdog/276.png  
  inflating: hotdog/train/not-hotdog/822.png  
 extracting: hotdog/train/not-hotdog/445.png  
  inflating: hotdog/train/not-hotdog/221.png  
 extracting: hotdog/train/not-hotdog/187.png  
  inflating: hotdog/train/not-hotdog/927.png  
  inflating: hotdog/train/not-hotdog/957.png  
  inflating: hotdog/train/not-hotdog/30.png  
  inflating: hotdog/train/not-hotdog/501.png  
 extracting: hotdog/train/not-hotdog/972.png  
  inflating: hotdog/train/not-hotdog/162.png  
  inflating: hotdog/train/not-hotdog/997.png  
 extracting: hotdog/train/not-hotdog/283.png  
  inflating: hotdog/train/not-hotdog/479.png  
  inflating: hotdog/train/not-hotdog/303.png  
  inflating: hotdog/train/not-hotdog/705.png  
 extracting: hotdog/train/not-hotdog/850.png  
  inflating: hotdog/train/not-hotdog/232.png  
  inflating: hotdog/train/not-hotdog/90.png  
  inflating: hotdog/train/not-hotdog/598.png  
  inflating: hotdog/train/not-hotdog/433.png  
 extracting: hotdog/train/not-hotdog/453.png  
  inflating: hotdog/train/not-hotdog/418.png  
 extracting: hotdog/train/not-hotdog/813.png  
  inflating: hotdog/train/not-hotdog/778.png  
 extracting: hotdog/train/not-hotdog/556.png  
  inflating: hotdog/train/not-hotdog/992.png  
  inflating: hotdog/train/not-hotdog/753.png  
  inflating: hotdog/train/not-hotdog/441.png  
  inflating: hotdog/train/not-hotdog/11.png  
  inflating: hotdog/train/not-hotdog/924.png  
  inflating: hotdog/train/not-hotdog/685.png  
  inflating: hotdog/train/not-hotdog/470.png  
 extracting: hotdog/train/not-hotdog/919.png  
  inflating: hotdog/train/not-hotdog/986.png  
 extracting: hotdog/train/not-hotdog/532.png  
 extracting: hotdog/train/not-hotdog/580.png  
  inflating: hotdog/train/not-hotdog/939.png  
 extracting: hotdog/train/not-hotdog/951.png  
  inflating: hotdog/train/not-hotdog/513.png  
  inflating: hotdog/train/not-hotdog/991.png  
  inflating: hotdog/train/not-hotdog/672.png  
  inflating: hotdog/train/not-hotdog/982.png  
  inflating: hotdog/train/not-hotdog/376.png  
 extracting: hotdog/train/not-hotdog/291.png  
  inflating: hotdog/train/not-hotdog/722.png  
 extracting: hotdog/train/not-hotdog/530.png  
 extracting: hotdog/train/not-hotdog/9.png  
  inflating: hotdog/train/not-hotdog/483.png  
  inflating: hotdog/train/not-hotdog/168.png  
  inflating: hotdog/train/not-hotdog/209.png  
  inflating: hotdog/train/not-hotdog/146.png  
  inflating: hotdog/train/not-hotdog/401.png  
  inflating: hotdog/train/not-hotdog/648.png  
 extracting: hotdog/train/not-hotdog/430.png  
 extracting: hotdog/train/not-hotdog/255.png  
  inflating: hotdog/train/not-hotdog/981.png  
 extracting: hotdog/train/not-hotdog/49.png  
  inflating: hotdog/train/not-hotdog/649.png  
  inflating: hotdog/train/not-hotdog/657.png  
  inflating: hotdog/train/not-hotdog/984.png  
  inflating: hotdog/train/not-hotdog/315.png  
  inflating: hotdog/train/not-hotdog/678.png  
 extracting: hotdog/train/not-hotdog/946.png  
  inflating: hotdog/train/not-hotdog/34.png  
  inflating: hotdog/train/not-hotdog/835.png  
  inflating: hotdog/train/not-hotdog/517.png  
  inflating: hotdog/train/not-hotdog/955.png  
  inflating: hotdog/train/not-hotdog/834.png  
  inflating: hotdog/train/not-hotdog/506.png  
  inflating: hotdog/train/not-hotdog/883.png  
  inflating: hotdog/train/not-hotdog/42.png  
 extracting: hotdog/train/not-hotdog/323.png  
  inflating: hotdog/train/not-hotdog/466.png  
  inflating: hotdog/train/not-hotdog/247.png  
  inflating: hotdog/train/not-hotdog/641.png  
 extracting: hotdog/train/not-hotdog/495.png  
 extracting: hotdog/train/not-hotdog/840.png  
 extracting: hotdog/train/not-hotdog/281.png  
  inflating: hotdog/train/not-hotdog/586.png  
 extracting: hotdog/train/not-hotdog/990.png  
  inflating: hotdog/train/not-hotdog/795.png  
  inflating: hotdog/train/not-hotdog/644.png  
  inflating: hotdog/train/not-hotdog/568.png  
  inflating: hotdog/train/not-hotdog/575.png  
  inflating: hotdog/train/not-hotdog/969.png  
  inflating: hotdog/train/not-hotdog/330.png  
 extracting: hotdog/train/not-hotdog/602.png  
 extracting: hotdog/train/not-hotdog/74.png  
 extracting: hotdog/train/not-hotdog/921.png  
  inflating: hotdog/train/not-hotdog/848.png  
  inflating: hotdog/train/not-hotdog/904.png  
  inflating: hotdog/train/not-hotdog/542.png  
  inflating: hotdog/train/not-hotdog/512.png  
  inflating: hotdog/train/not-hotdog/978.png  
  inflating: hotdog/train/not-hotdog/721.png  
  inflating: hotdog/train/not-hotdog/199.png  
  inflating: hotdog/train/not-hotdog/467.png  
 extracting: hotdog/train/not-hotdog/812.png  
 extracting: hotdog/train/not-hotdog/746.png  
  inflating: hotdog/train/not-hotdog/493.png  
  inflating: hotdog/train/not-hotdog/457.png  
  inflating: hotdog/train/not-hotdog/562.png  
  inflating: hotdog/train/not-hotdog/704.png  
  inflating: hotdog/train/not-hotdog/23.png  
 extracting: hotdog/train/not-hotdog/559.png  
  inflating: hotdog/train/not-hotdog/344.png  
  inflating: hotdog/train/not-hotdog/310.png  
 extracting: hotdog/train/not-hotdog/179.png  
  inflating: hotdog/train/not-hotdog/171.png  
  inflating: hotdog/train/not-hotdog/120.png  
  inflating: hotdog/train/not-hotdog/449.png  
  inflating: hotdog/train/not-hotdog/875.png  
  inflating: hotdog/train/not-hotdog/96.png  
  inflating: hotdog/train/not-hotdog/714.png  
  inflating: hotdog/train/not-hotdog/935.png  
  inflating: hotdog/train/not-hotdog/54.png  
  inflating: hotdog/train/not-hotdog/45.png  
 extracting: hotdog/train/not-hotdog/716.png  
  inflating: hotdog/train/not-hotdog/999.png  
  inflating: hotdog/train/not-hotdog/492.png  
  inflating: hotdog/train/not-hotdog/311.png  
 extracting: hotdog/train/not-hotdog/364.png  
  inflating: hotdog/train/not-hotdog/948.png  
 extracting: hotdog/train/not-hotdog/185.png  
 extracting: hotdog/train/not-hotdog/843.png  
 extracting: hotdog/train/not-hotdog/141.png  
 extracting: hotdog/train/not-hotdog/190.png  
  inflating: hotdog/train/not-hotdog/726.png  
  inflating: hotdog/train/not-hotdog/481.png  
 extracting: hotdog/train/not-hotdog/516.png  
  inflating: hotdog/train/not-hotdog/272.png  
  inflating: hotdog/train/not-hotdog/945.png  
  inflating: hotdog/train/not-hotdog/533.png  
  inflating: hotdog/train/not-hotdog/565.png  
  inflating: hotdog/train/not-hotdog/416.png  
  inflating: hotdog/train/not-hotdog/216.png  
  inflating: hotdog/train/not-hotdog/424.png  
 extracting: hotdog/train/not-hotdog/382.png  
 extracting: hotdog/train/not-hotdog/655.png  
 extracting: hotdog/train/not-hotdog/222.png  
  inflating: hotdog/train/not-hotdog/154.png  
  inflating: hotdog/train/not-hotdog/249.png  
  inflating: hotdog/train/not-hotdog/998.png  
 extracting: hotdog/train/not-hotdog/194.png  
  inflating: hotdog/train/not-hotdog/419.png  
  inflating: hotdog/train/not-hotdog/852.png  
 extracting: hotdog/train/not-hotdog/188.png  
  inflating: hotdog/train/not-hotdog/372.png  
 extracting: hotdog/train/not-hotdog/19.png  
  inflating: hotdog/train/not-hotdog/259.png  
 extracting: hotdog/train/not-hotdog/632.png  
  inflating: hotdog/train/not-hotdog/182.png  
 extracting: hotdog/train/not-hotdog/200.png  
  inflating: hotdog/train/not-hotdog/474.png  
  inflating: hotdog/train/not-hotdog/593.png  
 extracting: hotdog/train/not-hotdog/198.png  
  inflating: hotdog/train/not-hotdog/849.png  
  inflating: hotdog/train/not-hotdog/489.png  
  inflating: hotdog/train/not-hotdog/962.png  
  inflating: hotdog/train/not-hotdog/166.png  
  inflating: hotdog/train/not-hotdog/930.png  
  inflating: hotdog/train/not-hotdog/994.png  
 extracting: hotdog/train/not-hotdog/65.png  
  inflating: hotdog/train/not-hotdog/959.png  
  inflating: hotdog/train/not-hotdog/178.png  
 extracting: hotdog/train/not-hotdog/518.png  
  inflating: hotdog/train/not-hotdog/941.png  
  inflating: hotdog/train/not-hotdog/917.png  
 extracting: hotdog/train/not-hotdog/790.png  
  inflating: hotdog/train/not-hotdog/823.png  
  inflating: hotdog/train/not-hotdog/717.png  
  inflating: hotdog/train/not-hotdog/486.png  
 extracting: hotdog/train/not-hotdog/392.png  
  inflating: hotdog/train/not-hotdog/730.png  
 extracting: hotdog/train/not-hotdog/815.png  
  inflating: hotdog/train/not-hotdog/956.png  
 extracting: hotdog/train/not-hotdog/350.png  
  inflating: hotdog/train/not-hotdog/900.png  
  inflating: hotdog/train/not-hotdog/537.png  
 extracting: hotdog/train/not-hotdog/75.png  
  inflating: hotdog/train/not-hotdog/338.png  
 extracting: hotdog/train/not-hotdog/788.png  
 extracting: hotdog/train/not-hotdog/763.png  
  inflating: hotdog/train/not-hotdog/868.png  
 extracting: hotdog/train/not-hotdog/138.png  
  inflating: hotdog/train/not-hotdog/409.png  
  inflating: hotdog/train/not-hotdog/665.png  
  inflating: hotdog/train/not-hotdog/596.png  
  inflating: hotdog/train/not-hotdog/193.png  
 extracting: hotdog/train/not-hotdog/732.png  
  inflating: hotdog/train/not-hotdog/581.png  
 extracting: hotdog/train/not-hotdog/771.png  
 extracting: hotdog/train/not-hotdog/715.png  
  inflating: hotdog/train/not-hotdog/436.png  
  inflating: hotdog/train/not-hotdog/213.png  
 extracting: hotdog/train/not-hotdog/290.png  
  inflating: hotdog/train/not-hotdog/934.png  
  inflating: hotdog/train/not-hotdog/56.png  
 extracting: hotdog/train/not-hotdog/431.png  
 extracting: hotdog/train/not-hotdog/634.png  
  inflating: hotdog/train/not-hotdog/118.png  
  inflating: hotdog/train/not-hotdog/906.png  
  inflating: hotdog/train/not-hotdog/25.png  
  inflating: hotdog/train/not-hotdog/821.png  
  inflating: hotdog/train/not-hotdog/695.png  
  inflating: hotdog/train/not-hotdog/1.png  
  inflating: hotdog/train/not-hotdog/394.png  
  inflating: hotdog/train/not-hotdog/256.png  
  inflating: hotdog/train/not-hotdog/233.png  
  inflating: hotdog/train/not-hotdog/349.png  
  inflating: hotdog/train/not-hotdog/853.png  
  inflating: hotdog/train/not-hotdog/831.png  
 extracting: hotdog/train/not-hotdog/101.png  
 extracting: hotdog/train/not-hotdog/383.png  
  inflating: hotdog/train/not-hotdog/22.png  
  inflating: hotdog/train/not-hotdog/238.png  
 extracting: hotdog/train/not-hotdog/839.png  
  inflating: hotdog/train/not-hotdog/856.png  
  inflating: hotdog/train/not-hotdog/749.png  
  inflating: hotdog/train/not-hotdog/859.png  
  inflating: hotdog/train/not-hotdog/275.png  
  inflating: hotdog/train/not-hotdog/80.png  
  inflating: hotdog/train/not-hotdog/302.png  
 extracting: hotdog/train/not-hotdog/877.png  
  inflating: hotdog/train/not-hotdog/800.png  
  inflating: hotdog/train/not-hotdog/356.png  
 extracting: hotdog/train/not-hotdog/264.png  
  inflating: hotdog/train/not-hotdog/388.png  
  inflating: hotdog/train/not-hotdog/202.png  
  inflating: hotdog/train/not-hotdog/670.png  
 extracting: hotdog/train/not-hotdog/675.png  
 extracting: hotdog/train/not-hotdog/345.png  
  inflating: hotdog/train/not-hotdog/0.png  
  inflating: hotdog/train/not-hotdog/548.png  
  inflating: hotdog/train/not-hotdog/742.png  
  inflating: hotdog/train/not-hotdog/296.png  
  inflating: hotdog/train/not-hotdog/879.png  
 extracting: hotdog/train/not-hotdog/977.png  
  inflating: hotdog/train/not-hotdog/707.png  
  inflating: hotdog/train/not-hotdog/523.png  
 extracting: hotdog/train/not-hotdog/355.png  
  inflating: hotdog/train/not-hotdog/60.png  
 extracting: hotdog/train/not-hotdog/773.png  
  inflating: hotdog/train/not-hotdog/135.png  
  inflating: hotdog/train/not-hotdog/113.png  
 extracting: hotdog/train/not-hotdog/663.png  
  inflating: hotdog/train/not-hotdog/335.png  
  inflating: hotdog/train/not-hotdog/880.png  
 extracting: hotdog/train/not-hotdog/637.png  
  inflating: hotdog/train/not-hotdog/724.png  
 extracting: hotdog/train/not-hotdog/650.png  
  inflating: hotdog/train/not-hotdog/780.png  
  inflating: hotdog/train/not-hotdog/550.png  
 extracting: hotdog/train/not-hotdog/638.png  
  inflating: hotdog/train/not-hotdog/505.png  
 extracting: hotdog/train/not-hotdog/415.png  
  inflating: hotdog/train/not-hotdog/100.png  
 extracting: hotdog/train/not-hotdog/635.png  
  inflating: hotdog/train/not-hotdog/898.png  
  inflating: hotdog/train/not-hotdog/279.png  
 extracting: hotdog/train/not-hotdog/67.png  
  inflating: hotdog/train/not-hotdog/736.png  
 extracting: hotdog/train/not-hotdog/507.png  
  inflating: hotdog/train/not-hotdog/491.png  
  inflating: hotdog/train/not-hotdog/504.png  
  inflating: hotdog/train/not-hotdog/112.png  
  inflating: hotdog/train/not-hotdog/435.png  
  inflating: hotdog/train/not-hotdog/7.png  
  inflating: hotdog/train/not-hotdog/979.png  
 extracting: hotdog/train/not-hotdog/98.png  
 extracting: hotdog/train/not-hotdog/696.png  
 extracting: hotdog/train/not-hotdog/531.png  
  inflating: hotdog/train/not-hotdog/451.png  
  inflating: hotdog/train/not-hotdog/701.png  
  inflating: hotdog/train/not-hotdog/47.png  
  inflating: hotdog/train/not-hotdog/808.png  
  inflating: hotdog/train/not-hotdog/309.png  
  inflating: hotdog/train/not-hotdog/443.png  
 extracting: hotdog/train/not-hotdog/968.png  
  inflating: hotdog/train/not-hotdog/622.png  
  inflating: hotdog/train/not-hotdog/353.png  
  inflating: hotdog/train/not-hotdog/317.png  
  inflating: hotdog/train/not-hotdog/878.png  
  inflating: hotdog/train/not-hotdog/515.png  
 extracting: hotdog/train/not-hotdog/104.png  
  inflating: hotdog/train/not-hotdog/391.png  
  inflating: hotdog/train/not-hotdog/444.png  
  inflating: hotdog/train/not-hotdog/666.png  
 extracting: hotdog/train/not-hotdog/253.png  
 extracting: hotdog/train/not-hotdog/41.png  
 extracting: hotdog/train/not-hotdog/306.png  
 extracting: hotdog/train/not-hotdog/58.png  
  inflating: hotdog/train/not-hotdog/93.png  
  inflating: hotdog/train/not-hotdog/551.png  
  inflating: hotdog/train/not-hotdog/643.png  
  inflating: hotdog/train/not-hotdog/240.png  
 extracting: hotdog/train/not-hotdog/874.png  
  inflating: hotdog/train/not-hotdog/947.png  
 extracting: hotdog/train/not-hotdog/739.png  
 extracting: hotdog/train/not-hotdog/404.png  
  inflating: hotdog/train/not-hotdog/627.png  
  inflating: hotdog/train/not-hotdog/687.png  
 extracting: hotdog/train/not-hotdog/889.png  
  inflating: hotdog/train/not-hotdog/28.png  
  inflating: hotdog/train/not-hotdog/177.png  
 extracting: hotdog/train/not-hotdog/908.png  
  inflating: hotdog/train/not-hotdog/758.png  
 extracting: hotdog/train/not-hotdog/429.png  
  inflating: hotdog/train/not-hotdog/71.png  
 extracting: hotdog/train/not-hotdog/818.png  
  inflating: hotdog/train/not-hotdog/183.png  
 extracting: hotdog/train/not-hotdog/867.png  
  inflating: hotdog/train/not-hotdog/212.png  
 extracting: hotdog/train/not-hotdog/468.png  
  inflating: hotdog/train/not-hotdog/570.png  
  inflating: hotdog/train/not-hotdog/128.png  
  inflating: hotdog/train/not-hotdog/964.png  
 extracting: hotdog/train/not-hotdog/288.png  
  inflating: hotdog/train/not-hotdog/139.png  
  inflating: hotdog/train/not-hotdog/608.png  
 extracting: hotdog/train/not-hotdog/760.png  
  inflating: hotdog/train/not-hotdog/751.png  
  inflating: hotdog/train/not-hotdog/29.png  
  inflating: hotdog/train/not-hotdog/273.png  
  inflating: hotdog/train/not-hotdog/186.png  
  inflating: hotdog/train/not-hotdog/585.png  
  inflating: hotdog/train/not-hotdog/801.png  
  inflating: hotdog/train/not-hotdog/496.png  
 extracting: hotdog/train/not-hotdog/527.png  
 extracting: hotdog/train/not-hotdog/57.png  
 extracting: hotdog/train/not-hotdog/567.png  
 extracting: hotdog/train/not-hotdog/804.png  
 extracting: hotdog/train/not-hotdog/943.png  
  inflating: hotdog/train/not-hotdog/473.png  
  inflating: hotdog/train/not-hotdog/897.png  
  inflating: hotdog/train/not-hotdog/966.png  
 extracting: hotdog/train/not-hotdog/15.png  
 extracting: hotdog/train/not-hotdog/129.png  
 extracting: hotdog/train/not-hotdog/371.png  
 extracting: hotdog/train/not-hotdog/702.png  
 extracting: hotdog/train/not-hotdog/557.png  
  inflating: hotdog/train/not-hotdog/320.png  
  inflating: hotdog/train/not-hotdog/454.png  
  inflating: hotdog/train/not-hotdog/613.png  
  inflating: hotdog/train/not-hotdog/319.png  
 extracting: hotdog/train/not-hotdog/471.png  
  inflating: hotdog/train/not-hotdog/579.png  
  inflating: hotdog/train/not-hotdog/484.png  
  inflating: hotdog/train/not-hotdog/480.png  
  inflating: hotdog/train/not-hotdog/410.png  
  inflating: hotdog/train/not-hotdog/528.png  
 extracting: hotdog/train/not-hotdog/227.png  
 extracting: hotdog/train/not-hotdog/123.png  
  inflating: hotdog/train/not-hotdog/121.png  
  inflating: hotdog/train/not-hotdog/170.png  
 extracting: hotdog/train/not-hotdog/937.png  
 extracting: hotdog/train/not-hotdog/764.png  
  inflating: hotdog/train/not-hotdog/363.png  
  inflating: hotdog/train/not-hotdog/668.png  
  inflating: hotdog/train/not-hotdog/107.png  
  inflating: hotdog/train/not-hotdog/599.png  
  inflating: hotdog/train/not-hotdog/866.png  
  inflating: hotdog/train/not-hotdog/767.png  
  inflating: hotdog/train/not-hotdog/329.png  
  inflating: hotdog/train/not-hotdog/417.png  
 extracting: hotdog/train/not-hotdog/636.png  
 extracting: hotdog/train/not-hotdog/228.png  
  inflating: hotdog/train/not-hotdog/169.png  
  inflating: hotdog/train/not-hotdog/458.png  
  inflating: hotdog/train/not-hotdog/549.png  
  inflating: hotdog/train/not-hotdog/92.png  
  inflating: hotdog/train/not-hotdog/27.png  
  inflating: hotdog/train/not-hotdog/79.png  
  inflating: hotdog/train/not-hotdog/257.png  
  inflating: hotdog/train/not-hotdog/246.png  
  inflating: hotdog/train/not-hotdog/114.png  
 extracting: hotdog/train/not-hotdog/514.png  
  inflating: hotdog/train/not-hotdog/617.png  
  inflating: hotdog/train/not-hotdog/234.png  
  inflating: hotdog/train/not-hotdog/864.png  
  inflating: hotdog/train/not-hotdog/817.png  
 extracting: hotdog/train/not-hotdog/669.png  
  inflating: hotdog/train/not-hotdog/482.png  
  inflating: hotdog/train/not-hotdog/811.png  
  inflating: hotdog/train/not-hotdog/85.png  
 extracting: hotdog/train/not-hotdog/699.png  
 extracting: hotdog/train/not-hotdog/558.png  
  inflating: hotdog/train/not-hotdog/851.png  
 extracting: hotdog/train/not-hotdog/39.png  
  inflating: hotdog/train/not-hotdog/285.png  
  inflating: hotdog/train/not-hotdog/237.png  
 extracting: hotdog/train/not-hotdog/81.png  
  inflating: hotdog/train/not-hotdog/784.png  
  inflating: hotdog/train/not-hotdog/26.png  
  inflating: hotdog/train/not-hotdog/692.png  
 extracting: hotdog/train/not-hotdog/267.png  
 extracting: hotdog/train/not-hotdog/828.png  
  inflating: hotdog/train/not-hotdog/414.png  
 extracting: hotdog/train/not-hotdog/158.png  
  inflating: hotdog/train/not-hotdog/582.png  
  inflating: hotdog/train/not-hotdog/674.png  
  inflating: hotdog/train/not-hotdog/62.png  
  inflating: hotdog/train/not-hotdog/882.png  
  inflating: hotdog/train/not-hotdog/720.png  
 extracting: hotdog/train/not-hotdog/331.png  
  inflating: hotdog/train/not-hotdog/132.png  
  inflating: hotdog/train/not-hotdog/442.png  
  inflating: hotdog/train/not-hotdog/204.png  
  inflating: hotdog/train/not-hotdog/425.png  
  inflating: hotdog/train/not-hotdog/870.png  
  inflating: hotdog/train/not-hotdog/365.png  
 extracting: hotdog/train/not-hotdog/465.png  
  inflating: hotdog/train/not-hotdog/215.png  
 extracting: hotdog/train/not-hotdog/326.png  
  inflating: hotdog/train/not-hotdog/421.png  
  inflating: hotdog/train/not-hotdog/628.png  
 extracting: hotdog/train/not-hotdog/263.png  
  inflating: hotdog/train/not-hotdog/6.png  
  inflating: hotdog/train/not-hotdog/830.png  
  inflating: hotdog/train/not-hotdog/958.png  
 extracting: hotdog/train/not-hotdog/920.png  
  inflating: hotdog/train/not-hotdog/131.png  
 extracting: hotdog/train/not-hotdog/519.png  
 extracting: hotdog/train/not-hotdog/460.png  
  inflating: hotdog/train/not-hotdog/546.png  
 extracting: hotdog/train/not-hotdog/782.png  
  inflating: hotdog/train/not-hotdog/380.png  
  inflating: hotdog/train/not-hotdog/597.png  
  inflating: hotdog/train/not-hotdog/500.png  
  inflating: hotdog/train/not-hotdog/367.png  
 extracting: hotdog/train/not-hotdog/125.png  
  inflating: hotdog/train/not-hotdog/578.png  
  inflating: hotdog/train/not-hotdog/539.png  
  inflating: hotdog/train/not-hotdog/684.png  
 extracting: hotdog/train/not-hotdog/706.png  
 extracting: hotdog/train/not-hotdog/459.png  
  inflating: hotdog/train/not-hotdog/931.png  
 extracting: hotdog/train/not-hotdog/825.png  
 extracting: hotdog/train/not-hotdog/858.png  
  inflating: hotdog/train/not-hotdog/863.png  
  inflating: hotdog/train/not-hotdog/72.png  
  inflating: hotdog/train/not-hotdog/503.png  
  inflating: hotdog/train/not-hotdog/420.png  
  inflating: hotdog/train/not-hotdog/390.png  
  inflating: hotdog/train/not-hotdog/909.png  
  inflating: hotdog/train/not-hotdog/735.png  
 extracting: hotdog/train/not-hotdog/84.png  
  inflating: hotdog/train/not-hotdog/827.png  
  inflating: hotdog/train/not-hotdog/396.png  
  inflating: hotdog/train/not-hotdog/806.png  
  inflating: hotdog/train/not-hotdog/16.png  
  inflating: hotdog/train/not-hotdog/712.png  
  inflating: hotdog/train/not-hotdog/422.png  
  inflating: hotdog/train/not-hotdog/300.png  
  inflating: hotdog/train/not-hotdog/32.png  
  inflating: hotdog/train/not-hotdog/2.png  
 extracting: hotdog/train/not-hotdog/195.png  
 extracting: hotdog/train/not-hotdog/402.png  
  inflating: hotdog/train/not-hotdog/574.png  
  inflating: hotdog/train/not-hotdog/301.png  
  inflating: hotdog/train/not-hotdog/224.png  
  inflating: hotdog/train/not-hotdog/53.png  
  inflating: hotdog/train/not-hotdog/8.png  
  inflating: hotdog/train/not-hotdog/18.png  
  inflating: hotdog/train/not-hotdog/923.png  
 extracting: hotdog/train/not-hotdog/316.png  
  inflating: hotdog/train/not-hotdog/485.png  
 extracting: hotdog/train/not-hotdog/40.png  
 extracting: hotdog/train/not-hotdog/314.png  
  inflating: hotdog/train/not-hotdog/243.png  
  inflating: hotdog/train/not-hotdog/777.png  
 extracting: hotdog/train/not-hotdog/865.png  
 extracting: hotdog/train/not-hotdog/555.png  
 extracting: hotdog/train/not-hotdog/869.png  
  inflating: hotdog/train/not-hotdog/20.png  
 extracting: hotdog/train/not-hotdog/271.png  
  inflating: hotdog/train/not-hotdog/826.png  
 extracting: hotdog/train/not-hotdog/427.png  
  inflating: hotdog/train/not-hotdog/10.png  
  inflating: hotdog/train/not-hotdog/624.png  
 extracting: hotdog/train/not-hotdog/781.png  
 extracting: hotdog/train/not-hotdog/381.png  
  inflating: hotdog/train/not-hotdog/134.png  
  inflating: hotdog/train/not-hotdog/929.png  
 extracting: hotdog/train/not-hotdog/651.png  
  inflating: hotdog/train/not-hotdog/774.png  
 extracting: hotdog/train/not-hotdog/456.png  
  inflating: hotdog/train/not-hotdog/305.png  
  inflating: hotdog/train/not-hotdog/235.png  
 extracting: hotdog/train/not-hotdog/918.png  
  inflating: hotdog/train/not-hotdog/583.png  
  inflating: hotdog/train/not-hotdog/591.png  
  inflating: hotdog/train/not-hotdog/718.png  
  inflating: hotdog/train/not-hotdog/876.png  
  inflating: hotdog/train/not-hotdog/398.png  
 extracting: hotdog/train/not-hotdog/520.png  
 extracting: hotdog/train/not-hotdog/768.png  
  inflating: hotdog/train/not-hotdog/293.png  
  inflating: hotdog/train/not-hotdog/802.png  
  inflating: hotdog/train/not-hotdog/89.png  
  inflating: hotdog/train/not-hotdog/366.png  
 extracting: hotdog/train/not-hotdog/727.png  
 extracting: hotdog/train/not-hotdog/91.png  
 extracting: hotdog/train/not-hotdog/791.png  
 extracting: hotdog/train/not-hotdog/960.png  
  inflating: hotdog/train/not-hotdog/809.png  
  inflating: hotdog/train/not-hotdog/646.png  
  inflating: hotdog/train/not-hotdog/988.png  
  inflating: hotdog/train/not-hotdog/36.png  
  inflating: hotdog/train/not-hotdog/620.png  
  inflating: hotdog/train/not-hotdog/347.png  
  inflating: hotdog/train/not-hotdog/755.png  
  inflating: hotdog/train/not-hotdog/377.png  
  inflating: hotdog/train/not-hotdog/43.png  
 extracting: hotdog/train/not-hotdog/529.png  
 extracting: hotdog/train/not-hotdog/261.png  
  inflating: hotdog/train/not-hotdog/819.png  
  inflating: hotdog/train/not-hotdog/887.png  
  inflating: hotdog/train/not-hotdog/258.png  
  inflating: hotdog/train/not-hotdog/174.png  
 extracting: hotdog/train/not-hotdog/324.png  
 extracting: hotdog/train/not-hotdog/854.png  
  inflating: hotdog/train/not-hotdog/629.png  
  inflating: hotdog/train/not-hotdog/149.png  
 extracting: hotdog/train/not-hotdog/432.png  
  inflating: hotdog/train/not-hotdog/499.png  
 extracting: hotdog/train/not-hotdog/254.png  
  inflating: hotdog/train/not-hotdog/370.png  
 extracting: hotdog/train/not-hotdog/387.png  
  inflating: hotdog/train/not-hotdog/664.png  
  inflating: hotdog/train/not-hotdog/723.png  
  inflating: hotdog/train/not-hotdog/447.png  
 extracting: hotdog/train/not-hotdog/950.png  
 extracting: hotdog/train/not-hotdog/872.png  
  inflating: hotdog/train/not-hotdog/384.png  
  inflating: hotdog/train/not-hotdog/210.png  
 extracting: hotdog/train/not-hotdog/621.png  
  inflating: hotdog/train/not-hotdog/980.png  
  inflating: hotdog/train/not-hotdog/464.png  
  inflating: hotdog/train/not-hotdog/31.png  
  inflating: hotdog/train/not-hotdog/148.png  
  inflating: hotdog/train/not-hotdog/289.png  
 extracting: hotdog/train/not-hotdog/652.png  
  inflating: hotdog/train/not-hotdog/64.png  
  inflating: hotdog/train/not-hotdog/846.png  
 extracting: hotdog/train/not-hotdog/785.png  
 extracting: hotdog/train/not-hotdog/280.png  
  inflating: hotdog/train/not-hotdog/357.png  
  inflating: hotdog/train/not-hotdog/270.png  
  inflating: hotdog/train/not-hotdog/24.png  
  inflating: hotdog/train/not-hotdog/572.png  
  inflating: hotdog/train/not-hotdog/569.png  
  inflating: hotdog/train/not-hotdog/886.png  
  inflating: hotdog/train/not-hotdog/679.png  
  inflating: hotdog/train/not-hotdog/545.png  
  inflating: hotdog/train/not-hotdog/738.png  
  inflating: hotdog/train/not-hotdog/136.png  
  inflating: hotdog/train/not-hotdog/524.png  
  inflating: hotdog/train/not-hotdog/905.png  
 extracting: hotdog/train/not-hotdog/783.png  
  inflating: hotdog/train/not-hotdog/348.png  
 extracting: hotdog/train/not-hotdog/798.png  
  inflating: hotdog/train/not-hotdog/547.png  
  inflating: hotdog/train/not-hotdog/21.png  
 extracting: hotdog/train/not-hotdog/156.png  
 extracting: hotdog/train/not-hotdog/873.png  
  inflating: hotdog/train/not-hotdog/184.png  
  inflating: hotdog/train/not-hotdog/205.png  
  inflating: hotdog/train/not-hotdog/69.png  
  inflating: hotdog/train/not-hotdog/55.png  
 extracting: hotdog/train/not-hotdog/325.png  
  inflating: hotdog/train/not-hotdog/155.png  
  inflating: hotdog/train/not-hotdog/278.png  
  inflating: hotdog/train/not-hotdog/740.png  
  inflating: hotdog/train/not-hotdog/961.png  
  inflating: hotdog/train/not-hotdog/294.png  
  inflating: hotdog/train/not-hotdog/896.png  
  inflating: hotdog/train/not-hotdog/38.png  
  inflating: hotdog/train/not-hotdog/127.png  
 extracting: hotdog/train/not-hotdog/140.png  
 extracting: hotdog/train/not-hotdog/201.png  
  inflating: hotdog/train/not-hotdog/440.png  
  inflating: hotdog/train/not-hotdog/589.png  
  inflating: hotdog/train/not-hotdog/942.png  
  inflating: hotdog/train/not-hotdog/106.png  
  inflating: hotdog/train/not-hotdog/321.png  
  inflating: hotdog/train/not-hotdog/954.png  
 extracting: hotdog/train/not-hotdog/111.png  
 extracting: hotdog/train/not-hotdog/124.png  
  inflating: hotdog/train/not-hotdog/576.png  
  inflating: hotdog/train/not-hotdog/217.png  
 extracting: hotdog/train/not-hotdog/35.png  
 extracting: hotdog/train/not-hotdog/379.png  
  inflating: hotdog/train/not-hotdog/974.png  
  inflating: hotdog/train/not-hotdog/803.png  
  inflating: hotdog/train/not-hotdog/477.png  
  inflating: hotdog/train/not-hotdog/985.png  
 extracting: hotdog/train/not-hotdog/172.png  
  inflating: hotdog/train/not-hotdog/339.png  
  inflating: hotdog/train/not-hotdog/769.png  
 extracting: hotdog/train/not-hotdog/838.png  
 extracting: hotdog/train/not-hotdog/734.png  
  inflating: hotdog/train/not-hotdog/686.png  
 extracting: hotdog/train/not-hotdog/807.png  
 extracting: hotdog/train/not-hotdog/949.png  
  inflating: hotdog/train/not-hotdog/498.png  
  inflating: hotdog/train/not-hotdog/833.png  
 extracting: hotdog/train/not-hotdog/461.png  
  inflating: hotdog/train/not-hotdog/891.png  
  inflating: hotdog/train/not-hotdog/983.png  
  inflating: hotdog/train/not-hotdog/244.png  
  inflating: hotdog/train/not-hotdog/797.png  
  inflating: hotdog/train/not-hotdog/775.png  
  inflating: hotdog/train/not-hotdog/604.png  
 extracting: hotdog/train/not-hotdog/892.png  
 extracting: hotdog/train/not-hotdog/989.png  
  inflating: hotdog/train/not-hotdog/973.png  
  inflating: hotdog/train/not-hotdog/673.png  
  inflating: hotdog/train/not-hotdog/770.png  
  inflating: hotdog/train/not-hotdog/816.png  
  inflating: hotdog/train/not-hotdog/191.png  
 extracting: hotdog/train/not-hotdog/890.png  
 extracting: hotdog/train/not-hotdog/944.png  
  inflating: hotdog/train/not-hotdog/374.png  
  inflating: hotdog/train/not-hotdog/525.png  
 extracting: hotdog/train/not-hotdog/885.png  
  inflating: hotdog/train/not-hotdog/133.png  
  inflating: hotdog/train/not-hotdog/725.png  
 extracting: hotdog/train/not-hotdog/337.png  
  inflating: hotdog/train/not-hotdog/385.png  
 extracting: hotdog/train/not-hotdog/884.png  
  inflating: hotdog/train/not-hotdog/594.png  
  inflating: hotdog/train/not-hotdog/654.png  
  inflating: hotdog/train/not-hotdog/226.png  
  inflating: hotdog/train/not-hotdog/661.png  
  inflating: hotdog/train/not-hotdog/737.png  
  inflating: hotdog/train/not-hotdog/48.png  
  inflating: hotdog/train/not-hotdog/322.png  
 extracting: hotdog/train/not-hotdog/408.png  
  inflating: hotdog/train/not-hotdog/478.png  
  inflating: hotdog/train/not-hotdog/925.png  
 extracting: hotdog/train/not-hotdog/614.png  
  inflating: hotdog/train/not-hotdog/577.png  
  inflating: hotdog/train/not-hotdog/690.png  
  inflating: hotdog/train/not-hotdog/543.png  
  inflating: hotdog/train/not-hotdog/694.png  
 extracting: hotdog/train/not-hotdog/3.png  
  inflating: hotdog/train/not-hotdog/862.png  
 extracting: hotdog/train/not-hotdog/658.png  
  inflating: hotdog/train/not-hotdog/708.png  
  inflating: hotdog/train/not-hotdog/563.png  
  inflating: hotdog/train/not-hotdog/167.png  
  inflating: hotdog/train/not-hotdog/759.png  
 extracting: hotdog/train/not-hotdog/252.png  
  inflating: hotdog/train/not-hotdog/615.png  
 extracting: hotdog/train/not-hotdog/336.png  
 extracting: hotdog/train/not-hotdog/688.png  
  inflating: hotdog/train/not-hotdog/360.png  
  inflating: hotdog/train/not-hotdog/913.png  
 extracting: hotdog/train/not-hotdog/888.png  
 extracting: hotdog/train/not-hotdog/368.png  
  inflating: hotdog/train/not-hotdog/268.png  
  inflating: hotdog/train/not-hotdog/963.png  
 extracting: hotdog/train/not-hotdog/616.png  
 extracting: hotdog/train/not-hotdog/13.png  
  inflating: hotdog/train/not-hotdog/600.png  
  inflating: hotdog/train/not-hotdog/639.png  
 extracting: hotdog/train/not-hotdog/59.png  
  inflating: hotdog/train/not-hotdog/691.png  
 extracting: hotdog/train/not-hotdog/824.png  
  inflating: hotdog/train/not-hotdog/566.png  
 extracting: hotdog/train/not-hotdog/373.png  
  inflating: hotdog/train/not-hotdog/297.png  
  inflating: hotdog/train/not-hotdog/33.png  
  inflating: hotdog/train/not-hotdog/313.png  
  inflating: hotdog/train/not-hotdog/656.png  
  inflating: hotdog/train/not-hotdog/411.png  
  inflating: hotdog/train/not-hotdog/733.png  
 extracting: hotdog/train/not-hotdog/86.png  
  inflating: hotdog/train/not-hotdog/757.png  
  inflating: hotdog/train/not-hotdog/928.png  
 extracting: hotdog/train/not-hotdog/787.png  
  inflating: hotdog/train/not-hotdog/987.png  
  inflating: hotdog/train/not-hotdog/573.png  
  inflating: hotdog/train/not-hotdog/901.png  
  inflating: hotdog/train/not-hotdog/609.png  
  inflating: hotdog/train/not-hotdog/711.png  
  inflating: hotdog/train/not-hotdog/214.png  
 extracting: hotdog/train/not-hotdog/700.png  
  inflating: hotdog/train/not-hotdog/497.png  
  inflating: hotdog/train/not-hotdog/793.png  
  inflating: hotdog/train/not-hotdog/298.png  
  inflating: hotdog/train/not-hotdog/340.png  
  inflating: hotdog/train/not-hotdog/173.png  
  inflating: hotdog/train/not-hotdog/588.png  
  inflating: hotdog/train/not-hotdog/601.png  
  inflating: hotdog/train/not-hotdog/175.png  
  inflating: hotdog/train/not-hotdog/680.png  
  inflating: hotdog/train/not-hotdog/805.png  
  inflating: hotdog/train/not-hotdog/750.png  
  inflating: hotdog/train/not-hotdog/508.png  
  inflating: hotdog/train/not-hotdog/810.png  
 extracting: hotdog/train/not-hotdog/861.png  
  inflating: hotdog/train/not-hotdog/225.png  
  inflating: hotdog/train/not-hotdog/538.png  
  inflating: hotdog/train/not-hotdog/386.png  
  inflating: hotdog/train/not-hotdog/895.png  
  inflating: hotdog/train/not-hotdog/902.png  
  inflating: hotdog/train/not-hotdog/899.png  
  inflating: hotdog/train/not-hotdog/403.png  
 extracting: hotdog/train/not-hotdog/633.png  
 extracting: hotdog/train/not-hotdog/630.png  
  inflating: hotdog/train/not-hotdog/352.png  
  inflating: hotdog/train/not-hotdog/756.png  
  inflating: hotdog/train/not-hotdog/66.png  
  inflating: hotdog/train/not-hotdog/845.png  
  inflating: hotdog/train/not-hotdog/689.png  
 extracting: hotdog/train/not-hotdog/164.png  
  inflating: hotdog/train/not-hotdog/623.png  
  inflating: hotdog/train/not-hotdog/46.png  
 extracting: hotdog/train/not-hotdog/765.png  
  inflating: hotdog/train/not-hotdog/653.png  
  inflating: hotdog/train/not-hotdog/571.png  
 extracting: hotdog/train/not-hotdog/631.png  
  inflating: hotdog/train/not-hotdog/211.png  
  inflating: hotdog/train/not-hotdog/766.png  
  inflating: hotdog/train/not-hotdog/63.png  
  inflating: hotdog/train/not-hotdog/660.png  
  inflating: hotdog/train/not-hotdog/907.png  
  inflating: hotdog/train/not-hotdog/975.png  
 extracting: hotdog/train/not-hotdog/535.png  
 extracting: hotdog/train/not-hotdog/176.png  
  inflating: hotdog/train/not-hotdog/743.png  
  inflating: hotdog/train/not-hotdog/351.png  
 extracting: hotdog/train/not-hotdog/52.png  
 extracting: hotdog/train/not-hotdog/265.png  
  inflating: hotdog/train/not-hotdog/792.png  
  inflating: hotdog/train/not-hotdog/250.png  
  inflating: hotdog/train/not-hotdog/203.png  
 extracting: hotdog/train/not-hotdog/970.png  
 extracting: hotdog/train/not-hotdog/625.png  
  inflating: hotdog/train/not-hotdog/729.png  
 extracting: hotdog/train/not-hotdog/841.png  
  inflating: hotdog/train/not-hotdog/153.png  
 extracting: hotdog/train/not-hotdog/105.png  
  inflating: hotdog/train/not-hotdog/393.png  
  inflating: hotdog/train/not-hotdog/160.png  
  inflating: hotdog/train/not-hotdog/286.png  
  inflating: hotdog/train/not-hotdog/584.png  
 extracting: hotdog/train/not-hotdog/731.png  
  inflating: hotdog/train/not-hotdog/37.png  
  inflating: hotdog/train/not-hotdog/51.png  
  inflating: hotdog/train/not-hotdog/536.png  
  inflating: hotdog/train/not-hotdog/710.png  
  inflating: hotdog/train/not-hotdog/218.png  
 extracting: hotdog/train/not-hotdog/108.png  
 extracting: hotdog/train/not-hotdog/938.png  
  inflating: hotdog/train/not-hotdog/151.png  
  inflating: hotdog/train/not-hotdog/426.png  
 extracting: hotdog/train/not-hotdog/976.png  
 extracting: hotdog/train/not-hotdog/844.png  
 extracting: hotdog/train/not-hotdog/476.png  
  inflating: hotdog/train/not-hotdog/99.png  
  inflating: hotdog/train/not-hotdog/855.png  
  inflating: hotdog/train/not-hotdog/369.png  
  inflating: hotdog/train/not-hotdog/647.png  
  inflating: hotdog/train/not-hotdog/354.png  
  inflating: hotdog/train/not-hotdog/916.png  
  inflating: hotdog/train/not-hotdog/564.png  
  inflating: hotdog/train/not-hotdog/761.png  
  inflating: hotdog/train/not-hotdog/610.png  
  inflating: hotdog/train/not-hotdog/903.png  
  inflating: hotdog/train/not-hotdog/318.png  
  inflating: hotdog/train/not-hotdog/676.png  
 extracting: hotdog/train/not-hotdog/78.png  
  inflating: hotdog/train/not-hotdog/260.png  
  inflating: hotdog/train/not-hotdog/744.png  
 extracting: hotdog/train/not-hotdog/439.png  
  inflating: hotdog/train/not-hotdog/659.png  
  inflating: hotdog/train/not-hotdog/87.png  
  inflating: hotdog/train/not-hotdog/590.png  
  inflating: hotdog/train/not-hotdog/932.png  
  inflating: hotdog/train/not-hotdog/487.png  
  inflating: hotdog/train/not-hotdog/230.png  
 extracting: hotdog/train/not-hotdog/159.png  
  inflating: hotdog/train/not-hotdog/552.png  
 extracting: hotdog/train/not-hotdog/103.png  
 extracting: hotdog/train/not-hotdog/208.png  
  inflating: hotdog/train/not-hotdog/5.png  
  inflating: hotdog/train/not-hotdog/143.png  
  inflating: hotdog/train/not-hotdog/95.png  
  inflating: hotdog/train/not-hotdog/144.png  
  inflating: hotdog/train/not-hotdog/779.png  
  inflating: hotdog/train/not-hotdog/332.png  
 extracting: hotdog/train/not-hotdog/915.png  
  inflating: hotdog/train/not-hotdog/142.png  
 extracting: hotdog/train/not-hotdog/745.png  
  inflating: hotdog/train/not-hotdog/110.png  
  inflating: hotdog/train/not-hotdog/70.png  
 extracting: hotdog/train/not-hotdog/82.png  
  inflating: hotdog/train/not-hotdog/494.png  
 extracting: hotdog/train/not-hotdog/860.png  
  inflating: hotdog/train/not-hotdog/894.png  
  inflating: hotdog/train/not-hotdog/116.png  
  inflating: hotdog/train/not-hotdog/626.png  
  inflating: hotdog/train/not-hotdog/794.png  
 extracting: hotdog/train/not-hotdog/697.png  
 extracting: hotdog/train/not-hotdog/407.png  
 extracting: hotdog/train/not-hotdog/842.png  
  inflating: hotdog/train/not-hotdog/922.png  
  inflating: hotdog/train/not-hotdog/450.png  
  inflating: hotdog/train/not-hotdog/553.png  
  inflating: hotdog/train/not-hotdog/502.png  
  inflating: hotdog/train/not-hotdog/304.png  
  inflating: hotdog/train/not-hotdog/219.png  
  inflating: hotdog/train/not-hotdog/544.png  
  inflating: hotdog/train/not-hotdog/397.png  
  inflating: hotdog/train/not-hotdog/17.png  
  inflating: hotdog/train/not-hotdog/510.png  
  inflating: hotdog/train/not-hotdog/223.png  
  inflating: hotdog/train/not-hotdog/522.png  
   creating: hotdog/train/hotdog/
  inflating: hotdog/train/hotdog/50.png  
  inflating: hotdog/train/hotdog/554.png  
  inflating: hotdog/train/hotdog/299.png  
  inflating: hotdog/train/hotdog/428.png  
  inflating: hotdog/train/hotdog/475.png  
  inflating: hotdog/train/hotdog/933.png  
  inflating: hotdog/train/hotdog/677.png  
 extracting: hotdog/train/hotdog/284.png  
  inflating: hotdog/train/hotdog/728.png  
  inflating: hotdog/train/hotdog/667.png  
  inflating: hotdog/train/hotdog/912.png  
  inflating: hotdog/train/hotdog/406.png  
  inflating: hotdog/train/hotdog/333.png  
  inflating: hotdog/train/hotdog/837.png  
 extracting: hotdog/train/hotdog/295.png  
  inflating: hotdog/train/hotdog/274.png  
  inflating: hotdog/train/hotdog/307.png  
 extracting: hotdog/train/hotdog/343.png  
 extracting: hotdog/train/hotdog/399.png  
  inflating: hotdog/train/hotdog/618.png  
  inflating: hotdog/train/hotdog/358.png  
  inflating: hotdog/train/hotdog/122.png  
  inflating: hotdog/train/hotdog/119.png  
  inflating: hotdog/train/hotdog/645.png  
 extracting: hotdog/train/hotdog/231.png  
  inflating: hotdog/train/hotdog/488.png  
  inflating: hotdog/train/hotdog/603.png  
  inflating: hotdog/train/hotdog/911.png  
  inflating: hotdog/train/hotdog/328.png  
  inflating: hotdog/train/hotdog/277.png  
  inflating: hotdog/train/hotdog/820.png  
  inflating: hotdog/train/hotdog/463.png  
  inflating: hotdog/train/hotdog/361.png  
  inflating: hotdog/train/hotdog/832.png  
  inflating: hotdog/train/hotdog/693.png  
  inflating: hotdog/train/hotdog/239.png  
 extracting: hotdog/train/hotdog/606.png  
  inflating: hotdog/train/hotdog/871.png  
 extracting: hotdog/train/hotdog/560.png  
  inflating: hotdog/train/hotdog/334.png  
  inflating: hotdog/train/hotdog/405.png  
  inflating: hotdog/train/hotdog/251.png  
  inflating: hotdog/train/hotdog/14.png  
 extracting: hotdog/train/hotdog/829.png  
  inflating: hotdog/train/hotdog/12.png  
  inflating: hotdog/train/hotdog/400.png  
 extracting: hotdog/train/hotdog/312.png  
  inflating: hotdog/train/hotdog/762.png  
  inflating: hotdog/train/hotdog/789.png  
  inflating: hotdog/train/hotdog/137.png  
 extracting: hotdog/train/hotdog/472.png  
  inflating: hotdog/train/hotdog/995.png  
  inflating: hotdog/train/hotdog/359.png  
  inflating: hotdog/train/hotdog/389.png  
  inflating: hotdog/train/hotdog/971.png  
 extracting: hotdog/train/hotdog/607.png  
  inflating: hotdog/train/hotdog/282.png  
  inflating: hotdog/train/hotdog/526.png  
  inflating: hotdog/train/hotdog/936.png  
  inflating: hotdog/train/hotdog/197.png  
  inflating: hotdog/train/hotdog/362.png  
  inflating: hotdog/train/hotdog/713.png  
  inflating: hotdog/train/hotdog/220.png  
  inflating: hotdog/train/hotdog/747.png  
 extracting: hotdog/train/hotdog/97.png  
 extracting: hotdog/train/hotdog/126.png  
  inflating: hotdog/train/hotdog/996.png  
 extracting: hotdog/train/hotdog/327.png  
  inflating: hotdog/train/hotdog/438.png  
  inflating: hotdog/train/hotdog/540.png  
  inflating: hotdog/train/hotdog/109.png  
  inflating: hotdog/train/hotdog/611.png  
  inflating: hotdog/train/hotdog/292.png  
  inflating: hotdog/train/hotdog/926.png  
  inflating: hotdog/train/hotdog/814.png  
  inflating: hotdog/train/hotdog/967.png  
  inflating: hotdog/train/hotdog/683.png  
 extracting: hotdog/train/hotdog/952.png  
 extracting: hotdog/train/hotdog/776.png  
  inflating: hotdog/train/hotdog/592.png  
  inflating: hotdog/train/hotdog/68.png  
  inflating: hotdog/train/hotdog/910.png  
  inflating: hotdog/train/hotdog/754.png  
  inflating: hotdog/train/hotdog/236.png  
  inflating: hotdog/train/hotdog/847.png  
  inflating: hotdog/train/hotdog/206.png  
  inflating: hotdog/train/hotdog/180.png  
  inflating: hotdog/train/hotdog/413.png  
  inflating: hotdog/train/hotdog/681.png  
  inflating: hotdog/train/hotdog/287.png  
  inflating: hotdog/train/hotdog/242.png  
  inflating: hotdog/train/hotdog/836.png  
  inflating: hotdog/train/hotdog/145.png  
  inflating: hotdog/train/hotdog/490.png  
  inflating: hotdog/train/hotdog/130.png  
 extracting: hotdog/train/hotdog/269.png  
  inflating: hotdog/train/hotdog/189.png  
  inflating: hotdog/train/hotdog/207.png  
  inflating: hotdog/train/hotdog/94.png  
  inflating: hotdog/train/hotdog/378.png  
  inflating: hotdog/train/hotdog/341.png  
  inflating: hotdog/train/hotdog/73.png  
  inflating: hotdog/train/hotdog/709.png  
  inflating: hotdog/train/hotdog/375.png  
  inflating: hotdog/train/hotdog/993.png  
  inflating: hotdog/train/hotdog/4.png  
 extracting: hotdog/train/hotdog/796.png  
  inflating: hotdog/train/hotdog/342.png  
  inflating: hotdog/train/hotdog/881.png  
  inflating: hotdog/train/hotdog/165.png  
  inflating: hotdog/train/hotdog/509.png  
  inflating: hotdog/train/hotdog/150.png  
  inflating: hotdog/train/hotdog/196.png  
 extracting: hotdog/train/hotdog/534.png  
 extracting: hotdog/train/hotdog/642.png  
  inflating: hotdog/train/hotdog/152.png  
  inflating: hotdog/train/hotdog/434.png  
 extracting: hotdog/train/hotdog/953.png  
  inflating: hotdog/train/hotdog/308.png  
 extracting: hotdog/train/hotdog/682.png  
  inflating: hotdog/train/hotdog/595.png  
  inflating: hotdog/train/hotdog/662.png  
  inflating: hotdog/train/hotdog/619.png  
  inflating: hotdog/train/hotdog/719.png  
 extracting: hotdog/train/hotdog/437.png  
  inflating: hotdog/train/hotdog/752.png  
  inflating: hotdog/train/hotdog/671.png  
  inflating: hotdog/train/hotdog/469.png  
  inflating: hotdog/train/hotdog/83.png  
  inflating: hotdog/train/hotdog/462.png  
  inflating: hotdog/train/hotdog/452.png  
  inflating: hotdog/train/hotdog/455.png  
  inflating: hotdog/train/hotdog/115.png  
 extracting: hotdog/train/hotdog/163.png  
  inflating: hotdog/train/hotdog/395.png  
  inflating: hotdog/train/hotdog/266.png  
  inflating: hotdog/train/hotdog/605.png  
 extracting: hotdog/train/hotdog/772.png  
  inflating: hotdog/train/hotdog/346.png  
  inflating: hotdog/train/hotdog/423.png  
 extracting: hotdog/train/hotdog/88.png  
  inflating: hotdog/train/hotdog/703.png  
  inflating: hotdog/train/hotdog/587.png  
  inflating: hotdog/train/hotdog/448.png  
  inflating: hotdog/train/hotdog/44.png  
  inflating: hotdog/train/hotdog/741.png  
  inflating: hotdog/train/hotdog/698.png  
  inflating: hotdog/train/hotdog/262.png  
 extracting: hotdog/train/hotdog/181.png  
  inflating: hotdog/train/hotdog/61.png  
  inflating: hotdog/train/hotdog/893.png  
 extracting: hotdog/train/hotdog/561.png  
  inflating: hotdog/train/hotdog/245.png  
  inflating: hotdog/train/hotdog/412.png  
  inflating: hotdog/train/hotdog/157.png  
  inflating: hotdog/train/hotdog/102.png  
  inflating: hotdog/train/hotdog/612.png  
 extracting: hotdog/train/hotdog/640.png  
  inflating: hotdog/train/hotdog/76.png  
  inflating: hotdog/train/hotdog/914.png  
  inflating: hotdog/train/hotdog/799.png  
  inflating: hotdog/train/hotdog/161.png  
  inflating: hotdog/train/hotdog/748.png  
 extracting: hotdog/train/hotdog/940.png  
  inflating: hotdog/train/hotdog/117.png  
  inflating: hotdog/train/hotdog/446.png  
  inflating: hotdog/train/hotdog/857.png  
  inflating: hotdog/train/hotdog/77.png  
 extracting: hotdog/train/hotdog/229.png  
  inflating: hotdog/train/hotdog/965.png  
  inflating: hotdog/train/hotdog/511.png  
  inflating: hotdog/train/hotdog/786.png  
  inflating: hotdog/train/hotdog/248.png  
  inflating: hotdog/train/hotdog/192.png  
  inflating: hotdog/train/hotdog/521.png  
  inflating: hotdog/train/hotdog/541.png  
  inflating: hotdog/train/hotdog/241.png  
  inflating: hotdog/train/hotdog/147.png  
  inflating: hotdog/train/hotdog/276.png  
  inflating: hotdog/train/hotdog/822.png  
  inflating: hotdog/train/hotdog/445.png  
  inflating: hotdog/train/hotdog/221.png  
  inflating: hotdog/train/hotdog/187.png  
 extracting: hotdog/train/hotdog/927.png  
  inflating: hotdog/train/hotdog/957.png  
  inflating: hotdog/train/hotdog/30.png  
 extracting: hotdog/train/hotdog/501.png  
  inflating: hotdog/train/hotdog/972.png  
 extracting: hotdog/train/hotdog/162.png  
  inflating: hotdog/train/hotdog/997.png  
 extracting: hotdog/train/hotdog/283.png  
  inflating: hotdog/train/hotdog/479.png  
  inflating: hotdog/train/hotdog/303.png  
  inflating: hotdog/train/hotdog/705.png  
 extracting: hotdog/train/hotdog/850.png  
  inflating: hotdog/train/hotdog/232.png  
  inflating: hotdog/train/hotdog/90.png  
  inflating: hotdog/train/hotdog/598.png  
  inflating: hotdog/train/hotdog/433.png  
  inflating: hotdog/train/hotdog/453.png  
  inflating: hotdog/train/hotdog/418.png  
  inflating: hotdog/train/hotdog/813.png  
  inflating: hotdog/train/hotdog/778.png  
  inflating: hotdog/train/hotdog/556.png  
  inflating: hotdog/train/hotdog/992.png  
  inflating: hotdog/train/hotdog/753.png  
  inflating: hotdog/train/hotdog/441.png  
  inflating: hotdog/train/hotdog/11.png  
 extracting: hotdog/train/hotdog/924.png  
  inflating: hotdog/train/hotdog/685.png  
  inflating: hotdog/train/hotdog/470.png  
  inflating: hotdog/train/hotdog/919.png  
  inflating: hotdog/train/hotdog/986.png  
  inflating: hotdog/train/hotdog/532.png  
  inflating: hotdog/train/hotdog/580.png  
 extracting: hotdog/train/hotdog/939.png  
  inflating: hotdog/train/hotdog/951.png  
 extracting: hotdog/train/hotdog/513.png  
  inflating: hotdog/train/hotdog/991.png  
  inflating: hotdog/train/hotdog/672.png  
  inflating: hotdog/train/hotdog/982.png  
  inflating: hotdog/train/hotdog/376.png  
  inflating: hotdog/train/hotdog/291.png  
 extracting: hotdog/train/hotdog/722.png  
  inflating: hotdog/train/hotdog/530.png  
  inflating: hotdog/train/hotdog/9.png  
  inflating: hotdog/train/hotdog/483.png  
 extracting: hotdog/train/hotdog/168.png  
  inflating: hotdog/train/hotdog/209.png  
  inflating: hotdog/train/hotdog/146.png  
 extracting: hotdog/train/hotdog/401.png  
 extracting: hotdog/train/hotdog/648.png  
 extracting: hotdog/train/hotdog/430.png  
  inflating: hotdog/train/hotdog/255.png  
  inflating: hotdog/train/hotdog/981.png  
  inflating: hotdog/train/hotdog/49.png  
 extracting: hotdog/train/hotdog/649.png  
  inflating: hotdog/train/hotdog/657.png  
  inflating: hotdog/train/hotdog/984.png  
  inflating: hotdog/train/hotdog/315.png  
  inflating: hotdog/train/hotdog/678.png  
  inflating: hotdog/train/hotdog/946.png  
  inflating: hotdog/train/hotdog/34.png  
  inflating: hotdog/train/hotdog/835.png  
  inflating: hotdog/train/hotdog/517.png  
  inflating: hotdog/train/hotdog/955.png  
  inflating: hotdog/train/hotdog/834.png  
  inflating: hotdog/train/hotdog/506.png  
  inflating: hotdog/train/hotdog/883.png  
  inflating: hotdog/train/hotdog/42.png  
  inflating: hotdog/train/hotdog/323.png  
  inflating: hotdog/train/hotdog/466.png  
  inflating: hotdog/train/hotdog/247.png  
 extracting: hotdog/train/hotdog/641.png  
  inflating: hotdog/train/hotdog/495.png  
  inflating: hotdog/train/hotdog/840.png  
  inflating: hotdog/train/hotdog/281.png  
  inflating: hotdog/train/hotdog/586.png  
  inflating: hotdog/train/hotdog/990.png  
  inflating: hotdog/train/hotdog/795.png  
  inflating: hotdog/train/hotdog/644.png  
 extracting: hotdog/train/hotdog/568.png  
 extracting: hotdog/train/hotdog/575.png  
 extracting: hotdog/train/hotdog/969.png  
  inflating: hotdog/train/hotdog/330.png  
  inflating: hotdog/train/hotdog/602.png  
 extracting: hotdog/train/hotdog/74.png  
 extracting: hotdog/train/hotdog/921.png  
  inflating: hotdog/train/hotdog/848.png  
  inflating: hotdog/train/hotdog/904.png  
  inflating: hotdog/train/hotdog/542.png  
  inflating: hotdog/train/hotdog/512.png  
  inflating: hotdog/train/hotdog/978.png  
 extracting: hotdog/train/hotdog/721.png  
  inflating: hotdog/train/hotdog/199.png  
  inflating: hotdog/train/hotdog/467.png  
  inflating: hotdog/train/hotdog/812.png  
  inflating: hotdog/train/hotdog/746.png  
  inflating: hotdog/train/hotdog/493.png  
  inflating: hotdog/train/hotdog/457.png  
  inflating: hotdog/train/hotdog/562.png  
  inflating: hotdog/train/hotdog/704.png  
  inflating: hotdog/train/hotdog/23.png  
  inflating: hotdog/train/hotdog/559.png  
  inflating: hotdog/train/hotdog/344.png  
  inflating: hotdog/train/hotdog/310.png  
  inflating: hotdog/train/hotdog/179.png  
  inflating: hotdog/train/hotdog/171.png  
 extracting: hotdog/train/hotdog/120.png  
 extracting: hotdog/train/hotdog/449.png  
  inflating: hotdog/train/hotdog/875.png  
  inflating: hotdog/train/hotdog/96.png  
  inflating: hotdog/train/hotdog/714.png  
  inflating: hotdog/train/hotdog/935.png  
  inflating: hotdog/train/hotdog/54.png  
 extracting: hotdog/train/hotdog/45.png  
  inflating: hotdog/train/hotdog/716.png  
  inflating: hotdog/train/hotdog/999.png  
  inflating: hotdog/train/hotdog/492.png  
  inflating: hotdog/train/hotdog/311.png  
  inflating: hotdog/train/hotdog/364.png  
  inflating: hotdog/train/hotdog/948.png  
 extracting: hotdog/train/hotdog/185.png  
  inflating: hotdog/train/hotdog/843.png  
  inflating: hotdog/train/hotdog/141.png  
  inflating: hotdog/train/hotdog/190.png  
 extracting: hotdog/train/hotdog/726.png  
  inflating: hotdog/train/hotdog/481.png  
  inflating: hotdog/train/hotdog/516.png  
  inflating: hotdog/train/hotdog/272.png  
  inflating: hotdog/train/hotdog/945.png  
 extracting: hotdog/train/hotdog/533.png  
  inflating: hotdog/train/hotdog/565.png  
 extracting: hotdog/train/hotdog/416.png  
  inflating: hotdog/train/hotdog/216.png  
  inflating: hotdog/train/hotdog/424.png  
  inflating: hotdog/train/hotdog/382.png  
  inflating: hotdog/train/hotdog/655.png  
  inflating: hotdog/train/hotdog/222.png  
 extracting: hotdog/train/hotdog/154.png  
  inflating: hotdog/train/hotdog/249.png  
  inflating: hotdog/train/hotdog/998.png  
  inflating: hotdog/train/hotdog/194.png  
  inflating: hotdog/train/hotdog/419.png  
 extracting: hotdog/train/hotdog/852.png  
  inflating: hotdog/train/hotdog/188.png  
  inflating: hotdog/train/hotdog/372.png  
  inflating: hotdog/train/hotdog/19.png  
  inflating: hotdog/train/hotdog/259.png  
 extracting: hotdog/train/hotdog/632.png  
  inflating: hotdog/train/hotdog/182.png  
  inflating: hotdog/train/hotdog/200.png  
  inflating: hotdog/train/hotdog/474.png  
  inflating: hotdog/train/hotdog/593.png  
 extracting: hotdog/train/hotdog/198.png  
  inflating: hotdog/train/hotdog/849.png  
  inflating: hotdog/train/hotdog/489.png  
 extracting: hotdog/train/hotdog/962.png  
  inflating: hotdog/train/hotdog/166.png  
  inflating: hotdog/train/hotdog/930.png  
  inflating: hotdog/train/hotdog/994.png  
  inflating: hotdog/train/hotdog/65.png  
 extracting: hotdog/train/hotdog/959.png  
  inflating: hotdog/train/hotdog/178.png  
  inflating: hotdog/train/hotdog/518.png  
  inflating: hotdog/train/hotdog/941.png  
  inflating: hotdog/train/hotdog/917.png  
 extracting: hotdog/train/hotdog/790.png  
  inflating: hotdog/train/hotdog/823.png  
  inflating: hotdog/train/hotdog/717.png  
  inflating: hotdog/train/hotdog/486.png  
 extracting: hotdog/train/hotdog/392.png  
  inflating: hotdog/train/hotdog/730.png  
  inflating: hotdog/train/hotdog/815.png  
  inflating: hotdog/train/hotdog/956.png  
  inflating: hotdog/train/hotdog/350.png  
 extracting: hotdog/train/hotdog/900.png  
 extracting: hotdog/train/hotdog/537.png  
  inflating: hotdog/train/hotdog/75.png  
 extracting: hotdog/train/hotdog/338.png  
  inflating: hotdog/train/hotdog/788.png  
  inflating: hotdog/train/hotdog/763.png  
  inflating: hotdog/train/hotdog/868.png  
  inflating: hotdog/train/hotdog/138.png  
  inflating: hotdog/train/hotdog/409.png  
  inflating: hotdog/train/hotdog/665.png  
  inflating: hotdog/train/hotdog/596.png  
  inflating: hotdog/train/hotdog/193.png  
 extracting: hotdog/train/hotdog/732.png  
  inflating: hotdog/train/hotdog/581.png  
 extracting: hotdog/train/hotdog/771.png  
  inflating: hotdog/train/hotdog/715.png  
 extracting: hotdog/train/hotdog/436.png  
 extracting: hotdog/train/hotdog/213.png  
  inflating: hotdog/train/hotdog/290.png  
  inflating: hotdog/train/hotdog/934.png  
 extracting: hotdog/train/hotdog/56.png  
  inflating: hotdog/train/hotdog/431.png  
  inflating: hotdog/train/hotdog/634.png  
  inflating: hotdog/train/hotdog/118.png  
  inflating: hotdog/train/hotdog/906.png  
  inflating: hotdog/train/hotdog/25.png  
  inflating: hotdog/train/hotdog/821.png  
  inflating: hotdog/train/hotdog/695.png  
 extracting: hotdog/train/hotdog/1.png  
  inflating: hotdog/train/hotdog/394.png  
  inflating: hotdog/train/hotdog/256.png  
 extracting: hotdog/train/hotdog/233.png  
  inflating: hotdog/train/hotdog/349.png  
  inflating: hotdog/train/hotdog/853.png  
  inflating: hotdog/train/hotdog/831.png  
  inflating: hotdog/train/hotdog/101.png  
  inflating: hotdog/train/hotdog/383.png  
  inflating: hotdog/train/hotdog/22.png  
  inflating: hotdog/train/hotdog/238.png  
  inflating: hotdog/train/hotdog/839.png  
  inflating: hotdog/train/hotdog/856.png  
  inflating: hotdog/train/hotdog/749.png  
 extracting: hotdog/train/hotdog/859.png  
  inflating: hotdog/train/hotdog/275.png  
  inflating: hotdog/train/hotdog/80.png  
  inflating: hotdog/train/hotdog/302.png  
 extracting: hotdog/train/hotdog/877.png  
  inflating: hotdog/train/hotdog/800.png  
  inflating: hotdog/train/hotdog/356.png  
  inflating: hotdog/train/hotdog/264.png  
  inflating: hotdog/train/hotdog/388.png  
  inflating: hotdog/train/hotdog/202.png  
  inflating: hotdog/train/hotdog/670.png  
 extracting: hotdog/train/hotdog/675.png  
  inflating: hotdog/train/hotdog/345.png  
  inflating: hotdog/train/hotdog/0.png  
  inflating: hotdog/train/hotdog/548.png  
 extracting: hotdog/train/hotdog/742.png  
 extracting: hotdog/train/hotdog/296.png  
 extracting: hotdog/train/hotdog/879.png  
 extracting: hotdog/train/hotdog/977.png  
  inflating: hotdog/train/hotdog/707.png  
  inflating: hotdog/train/hotdog/523.png  
  inflating: hotdog/train/hotdog/355.png  
  inflating: hotdog/train/hotdog/60.png  
  inflating: hotdog/train/hotdog/773.png  
  inflating: hotdog/train/hotdog/135.png  
  inflating: hotdog/train/hotdog/113.png  
  inflating: hotdog/train/hotdog/663.png  
  inflating: hotdog/train/hotdog/335.png  
  inflating: hotdog/train/hotdog/880.png  
  inflating: hotdog/train/hotdog/637.png  
 extracting: hotdog/train/hotdog/724.png  
  inflating: hotdog/train/hotdog/650.png  
  inflating: hotdog/train/hotdog/780.png  
  inflating: hotdog/train/hotdog/550.png  
  inflating: hotdog/train/hotdog/638.png  
  inflating: hotdog/train/hotdog/505.png  
 extracting: hotdog/train/hotdog/415.png  
  inflating: hotdog/train/hotdog/100.png  
  inflating: hotdog/train/hotdog/635.png  
  inflating: hotdog/train/hotdog/898.png  
  inflating: hotdog/train/hotdog/279.png  
  inflating: hotdog/train/hotdog/67.png  
  inflating: hotdog/train/hotdog/736.png  
  inflating: hotdog/train/hotdog/507.png  
  inflating: hotdog/train/hotdog/491.png  
  inflating: hotdog/train/hotdog/504.png  
  inflating: hotdog/train/hotdog/112.png  
 extracting: hotdog/train/hotdog/435.png  
  inflating: hotdog/train/hotdog/7.png  
  inflating: hotdog/train/hotdog/979.png  
  inflating: hotdog/train/hotdog/98.png  
 extracting: hotdog/train/hotdog/696.png  
  inflating: hotdog/train/hotdog/531.png  
 extracting: hotdog/train/hotdog/451.png  
  inflating: hotdog/train/hotdog/701.png  
 extracting: hotdog/train/hotdog/47.png  
  inflating: hotdog/train/hotdog/808.png  
  inflating: hotdog/train/hotdog/309.png  
  inflating: hotdog/train/hotdog/443.png  
 extracting: hotdog/train/hotdog/968.png  
  inflating: hotdog/train/hotdog/622.png  
  inflating: hotdog/train/hotdog/353.png  
  inflating: hotdog/train/hotdog/317.png  
  inflating: hotdog/train/hotdog/878.png  
  inflating: hotdog/train/hotdog/515.png  
  inflating: hotdog/train/hotdog/104.png  
  inflating: hotdog/train/hotdog/391.png  
  inflating: hotdog/train/hotdog/444.png  
 extracting: hotdog/train/hotdog/666.png  
 extracting: hotdog/train/hotdog/253.png  
  inflating: hotdog/train/hotdog/41.png  
  inflating: hotdog/train/hotdog/306.png  
  inflating: hotdog/train/hotdog/58.png  
  inflating: hotdog/train/hotdog/93.png  
 extracting: hotdog/train/hotdog/551.png  
 extracting: hotdog/train/hotdog/643.png  
  inflating: hotdog/train/hotdog/240.png  
  inflating: hotdog/train/hotdog/874.png  
  inflating: hotdog/train/hotdog/947.png  
 extracting: hotdog/train/hotdog/739.png  
  inflating: hotdog/train/hotdog/404.png  
 extracting: hotdog/train/hotdog/627.png  
  inflating: hotdog/train/hotdog/687.png  
  inflating: hotdog/train/hotdog/889.png  
  inflating: hotdog/train/hotdog/28.png  
  inflating: hotdog/train/hotdog/177.png  
  inflating: hotdog/train/hotdog/908.png  
  inflating: hotdog/train/hotdog/758.png  
  inflating: hotdog/train/hotdog/429.png  
  inflating: hotdog/train/hotdog/71.png  
  inflating: hotdog/train/hotdog/818.png  
 extracting: hotdog/train/hotdog/183.png  
  inflating: hotdog/train/hotdog/867.png  
  inflating: hotdog/train/hotdog/212.png  
  inflating: hotdog/train/hotdog/468.png  
  inflating: hotdog/train/hotdog/570.png  
  inflating: hotdog/train/hotdog/128.png  
  inflating: hotdog/train/hotdog/964.png  
  inflating: hotdog/train/hotdog/288.png  
  inflating: hotdog/train/hotdog/139.png  
  inflating: hotdog/train/hotdog/608.png  
  inflating: hotdog/train/hotdog/760.png  
  inflating: hotdog/train/hotdog/751.png  
 extracting: hotdog/train/hotdog/29.png  
  inflating: hotdog/train/hotdog/273.png  
  inflating: hotdog/train/hotdog/186.png  
  inflating: hotdog/train/hotdog/585.png  
  inflating: hotdog/train/hotdog/801.png  
  inflating: hotdog/train/hotdog/496.png  
  inflating: hotdog/train/hotdog/527.png  
  inflating: hotdog/train/hotdog/57.png  
 extracting: hotdog/train/hotdog/567.png  
  inflating: hotdog/train/hotdog/804.png  
 extracting: hotdog/train/hotdog/943.png  
 extracting: hotdog/train/hotdog/473.png  
  inflating: hotdog/train/hotdog/897.png  
 extracting: hotdog/train/hotdog/966.png  
  inflating: hotdog/train/hotdog/15.png  
  inflating: hotdog/train/hotdog/129.png  
  inflating: hotdog/train/hotdog/371.png  
  inflating: hotdog/train/hotdog/702.png  
  inflating: hotdog/train/hotdog/557.png  
 extracting: hotdog/train/hotdog/320.png  
  inflating: hotdog/train/hotdog/454.png  
 extracting: hotdog/train/hotdog/613.png  
  inflating: hotdog/train/hotdog/319.png  
 extracting: hotdog/train/hotdog/471.png  
 extracting: hotdog/train/hotdog/579.png  
  inflating: hotdog/train/hotdog/484.png  
  inflating: hotdog/train/hotdog/480.png  
 extracting: hotdog/train/hotdog/410.png  
  inflating: hotdog/train/hotdog/528.png  
  inflating: hotdog/train/hotdog/227.png  
  inflating: hotdog/train/hotdog/123.png  
  inflating: hotdog/train/hotdog/121.png  
 extracting: hotdog/train/hotdog/170.png  
  inflating: hotdog/train/hotdog/937.png  
 extracting: hotdog/train/hotdog/764.png  
  inflating: hotdog/train/hotdog/363.png  
  inflating: hotdog/train/hotdog/668.png  
  inflating: hotdog/train/hotdog/107.png  
  inflating: hotdog/train/hotdog/599.png  
  inflating: hotdog/train/hotdog/866.png  
  inflating: hotdog/train/hotdog/767.png  
  inflating: hotdog/train/hotdog/329.png  
  inflating: hotdog/train/hotdog/417.png  
  inflating: hotdog/train/hotdog/636.png  
 extracting: hotdog/train/hotdog/228.png  
 extracting: hotdog/train/hotdog/169.png  
 extracting: hotdog/train/hotdog/458.png  
  inflating: hotdog/train/hotdog/549.png  
  inflating: hotdog/train/hotdog/92.png  
  inflating: hotdog/train/hotdog/27.png  
  inflating: hotdog/train/hotdog/79.png  
  inflating: hotdog/train/hotdog/257.png  
  inflating: hotdog/train/hotdog/246.png  
  inflating: hotdog/train/hotdog/114.png  
  inflating: hotdog/train/hotdog/514.png  
  inflating: hotdog/train/hotdog/617.png  
 extracting: hotdog/train/hotdog/234.png  
  inflating: hotdog/train/hotdog/864.png  
  inflating: hotdog/train/hotdog/817.png  
  inflating: hotdog/train/hotdog/669.png  
  inflating: hotdog/train/hotdog/482.png  
  inflating: hotdog/train/hotdog/811.png  
 extracting: hotdog/train/hotdog/85.png  
  inflating: hotdog/train/hotdog/699.png  
  inflating: hotdog/train/hotdog/558.png  
 extracting: hotdog/train/hotdog/851.png  
  inflating: hotdog/train/hotdog/39.png  
 extracting: hotdog/train/hotdog/285.png  
  inflating: hotdog/train/hotdog/237.png  
  inflating: hotdog/train/hotdog/81.png  
  inflating: hotdog/train/hotdog/784.png  
  inflating: hotdog/train/hotdog/26.png  
 extracting: hotdog/train/hotdog/692.png  
  inflating: hotdog/train/hotdog/267.png  
  inflating: hotdog/train/hotdog/828.png  
  inflating: hotdog/train/hotdog/414.png  
  inflating: hotdog/train/hotdog/158.png  
 extracting: hotdog/train/hotdog/582.png  
  inflating: hotdog/train/hotdog/674.png  
  inflating: hotdog/train/hotdog/62.png  
 extracting: hotdog/train/hotdog/882.png  
  inflating: hotdog/train/hotdog/720.png  
 extracting: hotdog/train/hotdog/331.png  
  inflating: hotdog/train/hotdog/132.png  
  inflating: hotdog/train/hotdog/442.png  
 extracting: hotdog/train/hotdog/204.png  
  inflating: hotdog/train/hotdog/425.png  
 extracting: hotdog/train/hotdog/870.png  
 extracting: hotdog/train/hotdog/365.png  
  inflating: hotdog/train/hotdog/465.png  
  inflating: hotdog/train/hotdog/215.png  
  inflating: hotdog/train/hotdog/326.png  
  inflating: hotdog/train/hotdog/421.png  
  inflating: hotdog/train/hotdog/628.png  
  inflating: hotdog/train/hotdog/263.png  
  inflating: hotdog/train/hotdog/6.png  
  inflating: hotdog/train/hotdog/830.png  
  inflating: hotdog/train/hotdog/958.png  
  inflating: hotdog/train/hotdog/920.png  
  inflating: hotdog/train/hotdog/131.png  
  inflating: hotdog/train/hotdog/519.png  
  inflating: hotdog/train/hotdog/460.png  
  inflating: hotdog/train/hotdog/546.png  
  inflating: hotdog/train/hotdog/782.png  
  inflating: hotdog/train/hotdog/380.png  
  inflating: hotdog/train/hotdog/597.png  
  inflating: hotdog/train/hotdog/500.png  
  inflating: hotdog/train/hotdog/367.png  
 extracting: hotdog/train/hotdog/125.png  
  inflating: hotdog/train/hotdog/578.png  
  inflating: hotdog/train/hotdog/539.png  
  inflating: hotdog/train/hotdog/684.png  
  inflating: hotdog/train/hotdog/706.png  
  inflating: hotdog/train/hotdog/459.png  
  inflating: hotdog/train/hotdog/931.png  
 extracting: hotdog/train/hotdog/825.png  
  inflating: hotdog/train/hotdog/858.png  
  inflating: hotdog/train/hotdog/863.png  
  inflating: hotdog/train/hotdog/72.png  
  inflating: hotdog/train/hotdog/503.png  
 extracting: hotdog/train/hotdog/420.png  
  inflating: hotdog/train/hotdog/390.png  
  inflating: hotdog/train/hotdog/909.png  
  inflating: hotdog/train/hotdog/735.png  
  inflating: hotdog/train/hotdog/84.png  
  inflating: hotdog/train/hotdog/827.png  
  inflating: hotdog/train/hotdog/396.png  
  inflating: hotdog/train/hotdog/806.png  
  inflating: hotdog/train/hotdog/16.png  
  inflating: hotdog/train/hotdog/712.png  
  inflating: hotdog/train/hotdog/422.png  
  inflating: hotdog/train/hotdog/300.png  
  inflating: hotdog/train/hotdog/32.png  
  inflating: hotdog/train/hotdog/2.png  
  inflating: hotdog/train/hotdog/195.png  
  inflating: hotdog/train/hotdog/402.png  
  inflating: hotdog/train/hotdog/574.png  
  inflating: hotdog/train/hotdog/301.png  
  inflating: hotdog/train/hotdog/224.png  
  inflating: hotdog/train/hotdog/53.png  
  inflating: hotdog/train/hotdog/8.png  
  inflating: hotdog/train/hotdog/18.png  
 extracting: hotdog/train/hotdog/923.png  
 extracting: hotdog/train/hotdog/316.png  
  inflating: hotdog/train/hotdog/485.png  
  inflating: hotdog/train/hotdog/40.png  
 extracting: hotdog/train/hotdog/314.png  
  inflating: hotdog/train/hotdog/243.png  
  inflating: hotdog/train/hotdog/777.png  
  inflating: hotdog/train/hotdog/865.png  
  inflating: hotdog/train/hotdog/555.png  
  inflating: hotdog/train/hotdog/869.png  
  inflating: hotdog/train/hotdog/20.png  
 extracting: hotdog/train/hotdog/271.png  
  inflating: hotdog/train/hotdog/826.png  
  inflating: hotdog/train/hotdog/427.png  
  inflating: hotdog/train/hotdog/10.png  
  inflating: hotdog/train/hotdog/624.png  
  inflating: hotdog/train/hotdog/781.png  
 extracting: hotdog/train/hotdog/381.png  
  inflating: hotdog/train/hotdog/134.png  
  inflating: hotdog/train/hotdog/929.png  
  inflating: hotdog/train/hotdog/651.png  
  inflating: hotdog/train/hotdog/774.png  
  inflating: hotdog/train/hotdog/456.png  
  inflating: hotdog/train/hotdog/305.png  
 extracting: hotdog/train/hotdog/235.png  
 extracting: hotdog/train/hotdog/918.png  
 extracting: hotdog/train/hotdog/583.png  
  inflating: hotdog/train/hotdog/591.png  
 extracting: hotdog/train/hotdog/718.png  
  inflating: hotdog/train/hotdog/876.png  
 extracting: hotdog/train/hotdog/398.png  
  inflating: hotdog/train/hotdog/520.png  
  inflating: hotdog/train/hotdog/768.png  
  inflating: hotdog/train/hotdog/293.png  
  inflating: hotdog/train/hotdog/802.png  
  inflating: hotdog/train/hotdog/89.png  
  inflating: hotdog/train/hotdog/366.png  
 extracting: hotdog/train/hotdog/727.png  
  inflating: hotdog/train/hotdog/91.png  
 extracting: hotdog/train/hotdog/791.png  
  inflating: hotdog/train/hotdog/960.png  
 extracting: hotdog/train/hotdog/809.png  
 extracting: hotdog/train/hotdog/646.png  
  inflating: hotdog/train/hotdog/988.png  
  inflating: hotdog/train/hotdog/36.png  
  inflating: hotdog/train/hotdog/620.png  
  inflating: hotdog/train/hotdog/347.png  
  inflating: hotdog/train/hotdog/755.png  
  inflating: hotdog/train/hotdog/377.png  
 extracting: hotdog/train/hotdog/43.png  
  inflating: hotdog/train/hotdog/529.png  
  inflating: hotdog/train/hotdog/261.png  
 extracting: hotdog/train/hotdog/819.png  
  inflating: hotdog/train/hotdog/887.png  
  inflating: hotdog/train/hotdog/258.png  
  inflating: hotdog/train/hotdog/174.png  
  inflating: hotdog/train/hotdog/324.png  
  inflating: hotdog/train/hotdog/854.png  
  inflating: hotdog/train/hotdog/629.png  
  inflating: hotdog/train/hotdog/149.png  
  inflating: hotdog/train/hotdog/432.png  
 extracting: hotdog/train/hotdog/499.png  
  inflating: hotdog/train/hotdog/254.png  
  inflating: hotdog/train/hotdog/370.png  
  inflating: hotdog/train/hotdog/387.png  
  inflating: hotdog/train/hotdog/664.png  
 extracting: hotdog/train/hotdog/723.png  
  inflating: hotdog/train/hotdog/447.png  
  inflating: hotdog/train/hotdog/950.png  
  inflating: hotdog/train/hotdog/872.png  
  inflating: hotdog/train/hotdog/384.png  
  inflating: hotdog/train/hotdog/210.png  
  inflating: hotdog/train/hotdog/621.png  
  inflating: hotdog/train/hotdog/980.png  
  inflating: hotdog/train/hotdog/464.png  
  inflating: hotdog/train/hotdog/31.png  
  inflating: hotdog/train/hotdog/148.png  
  inflating: hotdog/train/hotdog/289.png  
  inflating: hotdog/train/hotdog/652.png  
  inflating: hotdog/train/hotdog/64.png  
  inflating: hotdog/train/hotdog/846.png  
 extracting: hotdog/train/hotdog/785.png  
 extracting: hotdog/train/hotdog/280.png  
  inflating: hotdog/train/hotdog/357.png  
 extracting: hotdog/train/hotdog/270.png  
 extracting: hotdog/train/hotdog/24.png  
  inflating: hotdog/train/hotdog/572.png  
 extracting: hotdog/train/hotdog/569.png  
  inflating: hotdog/train/hotdog/886.png  
  inflating: hotdog/train/hotdog/679.png  
  inflating: hotdog/train/hotdog/545.png  
 extracting: hotdog/train/hotdog/738.png  
  inflating: hotdog/train/hotdog/136.png  
  inflating: hotdog/train/hotdog/524.png  
  inflating: hotdog/train/hotdog/905.png  
  inflating: hotdog/train/hotdog/783.png  
  inflating: hotdog/train/hotdog/348.png  
  inflating: hotdog/train/hotdog/798.png  
  inflating: hotdog/train/hotdog/547.png  
 extracting: hotdog/train/hotdog/21.png  
  inflating: hotdog/train/hotdog/156.png  
 extracting: hotdog/train/hotdog/873.png  
  inflating: hotdog/train/hotdog/184.png  
  inflating: hotdog/train/hotdog/205.png  
  inflating: hotdog/train/hotdog/69.png  
  inflating: hotdog/train/hotdog/55.png  
  inflating: hotdog/train/hotdog/325.png  
  inflating: hotdog/train/hotdog/155.png  
  inflating: hotdog/train/hotdog/278.png  
  inflating: hotdog/train/hotdog/740.png  
  inflating: hotdog/train/hotdog/961.png  
  inflating: hotdog/train/hotdog/294.png  
 extracting: hotdog/train/hotdog/896.png  
  inflating: hotdog/train/hotdog/38.png  
  inflating: hotdog/train/hotdog/127.png  
  inflating: hotdog/train/hotdog/140.png  
 extracting: hotdog/train/hotdog/201.png  
  inflating: hotdog/train/hotdog/440.png  
  inflating: hotdog/train/hotdog/589.png  
 extracting: hotdog/train/hotdog/942.png  
  inflating: hotdog/train/hotdog/106.png  
  inflating: hotdog/train/hotdog/321.png  
  inflating: hotdog/train/hotdog/954.png  
  inflating: hotdog/train/hotdog/111.png  
  inflating: hotdog/train/hotdog/124.png  
 extracting: hotdog/train/hotdog/576.png  
  inflating: hotdog/train/hotdog/217.png  
  inflating: hotdog/train/hotdog/35.png  
  inflating: hotdog/train/hotdog/379.png  
  inflating: hotdog/train/hotdog/974.png  
  inflating: hotdog/train/hotdog/803.png  
  inflating: hotdog/train/hotdog/477.png  
 extracting: hotdog/train/hotdog/985.png  
  inflating: hotdog/train/hotdog/172.png  
 extracting: hotdog/train/hotdog/339.png  
  inflating: hotdog/train/hotdog/769.png  
  inflating: hotdog/train/hotdog/838.png  
  inflating: hotdog/train/hotdog/734.png  
  inflating: hotdog/train/hotdog/686.png  
  inflating: hotdog/train/hotdog/807.png  
  inflating: hotdog/train/hotdog/949.png  
  inflating: hotdog/train/hotdog/498.png  
  inflating: hotdog/train/hotdog/833.png  
 extracting: hotdog/train/hotdog/461.png  
  inflating: hotdog/train/hotdog/891.png  
  inflating: hotdog/train/hotdog/983.png  
  inflating: hotdog/train/hotdog/244.png  
  inflating: hotdog/train/hotdog/797.png  
  inflating: hotdog/train/hotdog/775.png  
  inflating: hotdog/train/hotdog/604.png  
  inflating: hotdog/train/hotdog/892.png  
  inflating: hotdog/train/hotdog/989.png  
  inflating: hotdog/train/hotdog/973.png  
  inflating: hotdog/train/hotdog/673.png  
 extracting: hotdog/train/hotdog/770.png  
  inflating: hotdog/train/hotdog/816.png  
  inflating: hotdog/train/hotdog/191.png  
  inflating: hotdog/train/hotdog/890.png  
  inflating: hotdog/train/hotdog/944.png  
 extracting: hotdog/train/hotdog/374.png  
  inflating: hotdog/train/hotdog/525.png  
 extracting: hotdog/train/hotdog/885.png  
  inflating: hotdog/train/hotdog/133.png  
 extracting: hotdog/train/hotdog/725.png  
  inflating: hotdog/train/hotdog/337.png  
  inflating: hotdog/train/hotdog/385.png  
  inflating: hotdog/train/hotdog/884.png  
  inflating: hotdog/train/hotdog/594.png  
  inflating: hotdog/train/hotdog/654.png  
  inflating: hotdog/train/hotdog/226.png  
  inflating: hotdog/train/hotdog/661.png  
  inflating: hotdog/train/hotdog/737.png  
  inflating: hotdog/train/hotdog/48.png  
  inflating: hotdog/train/hotdog/322.png  
  inflating: hotdog/train/hotdog/408.png  
  inflating: hotdog/train/hotdog/478.png  
 extracting: hotdog/train/hotdog/925.png  
  inflating: hotdog/train/hotdog/614.png  
 extracting: hotdog/train/hotdog/577.png  
  inflating: hotdog/train/hotdog/690.png  
  inflating: hotdog/train/hotdog/543.png  
  inflating: hotdog/train/hotdog/694.png  
  inflating: hotdog/train/hotdog/3.png  
  inflating: hotdog/train/hotdog/862.png  
  inflating: hotdog/train/hotdog/658.png  
  inflating: hotdog/train/hotdog/708.png  
  inflating: hotdog/train/hotdog/563.png  
  inflating: hotdog/train/hotdog/167.png  
  inflating: hotdog/train/hotdog/759.png  
  inflating: hotdog/train/hotdog/252.png  
  inflating: hotdog/train/hotdog/615.png  
  inflating: hotdog/train/hotdog/336.png  
 extracting: hotdog/train/hotdog/688.png  
  inflating: hotdog/train/hotdog/360.png  
  inflating: hotdog/train/hotdog/913.png  
  inflating: hotdog/train/hotdog/888.png  
  inflating: hotdog/train/hotdog/368.png  
  inflating: hotdog/train/hotdog/268.png  
  inflating: hotdog/train/hotdog/963.png  
  inflating: hotdog/train/hotdog/616.png  
 extracting: hotdog/train/hotdog/13.png  
  inflating: hotdog/train/hotdog/600.png  
  inflating: hotdog/train/hotdog/639.png  
  inflating: hotdog/train/hotdog/59.png  
  inflating: hotdog/train/hotdog/691.png  
  inflating: hotdog/train/hotdog/824.png  
  inflating: hotdog/train/hotdog/566.png  
  inflating: hotdog/train/hotdog/373.png  
  inflating: hotdog/train/hotdog/297.png  
  inflating: hotdog/train/hotdog/33.png  
  inflating: hotdog/train/hotdog/313.png  
  inflating: hotdog/train/hotdog/656.png  
  inflating: hotdog/train/hotdog/411.png  
  inflating: hotdog/train/hotdog/733.png  
  inflating: hotdog/train/hotdog/86.png  
  inflating: hotdog/train/hotdog/757.png  
  inflating: hotdog/train/hotdog/928.png  
 extracting: hotdog/train/hotdog/787.png  
  inflating: hotdog/train/hotdog/987.png  
  inflating: hotdog/train/hotdog/573.png  
  inflating: hotdog/train/hotdog/901.png  
  inflating: hotdog/train/hotdog/609.png  
 extracting: hotdog/train/hotdog/711.png  
 extracting: hotdog/train/hotdog/214.png  
  inflating: hotdog/train/hotdog/700.png  
  inflating: hotdog/train/hotdog/497.png  
  inflating: hotdog/train/hotdog/793.png  
  inflating: hotdog/train/hotdog/298.png  
 extracting: hotdog/train/hotdog/340.png  
  inflating: hotdog/train/hotdog/173.png  
  inflating: hotdog/train/hotdog/588.png  
 extracting: hotdog/train/hotdog/601.png  
  inflating: hotdog/train/hotdog/175.png  
  inflating: hotdog/train/hotdog/680.png  
  inflating: hotdog/train/hotdog/805.png  
 extracting: hotdog/train/hotdog/750.png  
 extracting: hotdog/train/hotdog/508.png  
  inflating: hotdog/train/hotdog/810.png  
  inflating: hotdog/train/hotdog/861.png  
  inflating: hotdog/train/hotdog/225.png  
  inflating: hotdog/train/hotdog/538.png  
  inflating: hotdog/train/hotdog/386.png  
  inflating: hotdog/train/hotdog/895.png  
  inflating: hotdog/train/hotdog/902.png  
  inflating: hotdog/train/hotdog/899.png  
  inflating: hotdog/train/hotdog/403.png  
  inflating: hotdog/train/hotdog/633.png  
 extracting: hotdog/train/hotdog/630.png  
  inflating: hotdog/train/hotdog/352.png  
  inflating: hotdog/train/hotdog/756.png  
  inflating: hotdog/train/hotdog/66.png  
 extracting: hotdog/train/hotdog/845.png  
  inflating: hotdog/train/hotdog/689.png  
 extracting: hotdog/train/hotdog/164.png  
 extracting: hotdog/train/hotdog/623.png  
  inflating: hotdog/train/hotdog/46.png  
  inflating: hotdog/train/hotdog/765.png  
  inflating: hotdog/train/hotdog/653.png  
  inflating: hotdog/train/hotdog/571.png  
 extracting: hotdog/train/hotdog/631.png  
  inflating: hotdog/train/hotdog/211.png  
 extracting: hotdog/train/hotdog/766.png  
  inflating: hotdog/train/hotdog/63.png  
  inflating: hotdog/train/hotdog/660.png  
  inflating: hotdog/train/hotdog/907.png  
 extracting: hotdog/train/hotdog/975.png  
 extracting: hotdog/train/hotdog/535.png  
  inflating: hotdog/train/hotdog/176.png  
  inflating: hotdog/train/hotdog/743.png  
  inflating: hotdog/train/hotdog/351.png  
  inflating: hotdog/train/hotdog/52.png  
 extracting: hotdog/train/hotdog/265.png  
  inflating: hotdog/train/hotdog/792.png  
  inflating: hotdog/train/hotdog/250.png  
 extracting: hotdog/train/hotdog/203.png  
 extracting: hotdog/train/hotdog/970.png  
 extracting: hotdog/train/hotdog/625.png  
  inflating: hotdog/train/hotdog/729.png  
  inflating: hotdog/train/hotdog/841.png  
  inflating: hotdog/train/hotdog/153.png  
  inflating: hotdog/train/hotdog/105.png  
  inflating: hotdog/train/hotdog/393.png  
  inflating: hotdog/train/hotdog/160.png  
 extracting: hotdog/train/hotdog/286.png  
  inflating: hotdog/train/hotdog/584.png  
  inflating: hotdog/train/hotdog/731.png  
  inflating: hotdog/train/hotdog/37.png  
  inflating: hotdog/train/hotdog/51.png  
  inflating: hotdog/train/hotdog/536.png  
 extracting: hotdog/train/hotdog/710.png  
  inflating: hotdog/train/hotdog/218.png  
  inflating: hotdog/train/hotdog/108.png  
  inflating: hotdog/train/hotdog/938.png  
  inflating: hotdog/train/hotdog/151.png  
  inflating: hotdog/train/hotdog/426.png  
  inflating: hotdog/train/hotdog/976.png  
 extracting: hotdog/train/hotdog/844.png  
  inflating: hotdog/train/hotdog/476.png  
  inflating: hotdog/train/hotdog/99.png  
  inflating: hotdog/train/hotdog/855.png  
  inflating: hotdog/train/hotdog/369.png  
 extracting: hotdog/train/hotdog/647.png  
  inflating: hotdog/train/hotdog/354.png  
 extracting: hotdog/train/hotdog/916.png  
  inflating: hotdog/train/hotdog/564.png  
  inflating: hotdog/train/hotdog/761.png  
  inflating: hotdog/train/hotdog/610.png  
  inflating: hotdog/train/hotdog/903.png  
 extracting: hotdog/train/hotdog/318.png  
  inflating: hotdog/train/hotdog/676.png  
  inflating: hotdog/train/hotdog/78.png  
 extracting: hotdog/train/hotdog/260.png  
  inflating: hotdog/train/hotdog/744.png  
  inflating: hotdog/train/hotdog/439.png  
  inflating: hotdog/train/hotdog/659.png  
  inflating: hotdog/train/hotdog/87.png  
 extracting: hotdog/train/hotdog/590.png  
 extracting: hotdog/train/hotdog/932.png  
  inflating: hotdog/train/hotdog/487.png  
 extracting: hotdog/train/hotdog/230.png  
  inflating: hotdog/train/hotdog/159.png  
  inflating: hotdog/train/hotdog/552.png  
  inflating: hotdog/train/hotdog/103.png  
  inflating: hotdog/train/hotdog/208.png  
 extracting: hotdog/train/hotdog/5.png  
  inflating: hotdog/train/hotdog/143.png  
 extracting: hotdog/train/hotdog/95.png  
  inflating: hotdog/train/hotdog/144.png  
  inflating: hotdog/train/hotdog/779.png  
  inflating: hotdog/train/hotdog/332.png  
  inflating: hotdog/train/hotdog/915.png  
  inflating: hotdog/train/hotdog/142.png  
 extracting: hotdog/train/hotdog/745.png  
  inflating: hotdog/train/hotdog/110.png  
  inflating: hotdog/train/hotdog/70.png  
  inflating: hotdog/train/hotdog/82.png  
  inflating: hotdog/train/hotdog/494.png  
 extracting: hotdog/train/hotdog/860.png  
  inflating: hotdog/train/hotdog/894.png  
  inflating: hotdog/train/hotdog/116.png  
 extracting: hotdog/train/hotdog/626.png  
  inflating: hotdog/train/hotdog/794.png  
 extracting: hotdog/train/hotdog/697.png  
  inflating: hotdog/train/hotdog/407.png  
  inflating: hotdog/train/hotdog/842.png  
 extracting: hotdog/train/hotdog/922.png  
 extracting: hotdog/train/hotdog/450.png  
  inflating: hotdog/train/hotdog/553.png  
  inflating: hotdog/train/hotdog/502.png  
  inflating: hotdog/train/hotdog/304.png  
  inflating: hotdog/train/hotdog/219.png  
  inflating: hotdog/train/hotdog/544.png  
  inflating: hotdog/train/hotdog/397.png  
  inflating: hotdog/train/hotdog/17.png  
  inflating: hotdog/train/hotdog/510.png  
  inflating: hotdog/train/hotdog/223.png  
  inflating: hotdog/train/hotdog/522.png  
   creating: hotdog/test/
   creating: hotdog/test/not-hotdog/
  inflating: hotdog/test/not-hotdog/1379.png  
  inflating: hotdog/test/not-hotdog/1388.png  
  inflating: hotdog/test/not-hotdog/1067.png  
 extracting: hotdog/test/not-hotdog/1383.png  
  inflating: hotdog/test/not-hotdog/1377.png  
  inflating: hotdog/test/not-hotdog/1015.png  
  inflating: hotdog/test/not-hotdog/1172.png  
  inflating: hotdog/test/not-hotdog/1030.png  
  inflating: hotdog/test/not-hotdog/1114.png  
  inflating: hotdog/test/not-hotdog/1186.png  
  inflating: hotdog/test/not-hotdog/1200.png  
  inflating: hotdog/test/not-hotdog/1380.png  
  inflating: hotdog/test/not-hotdog/1247.png  
 extracting: hotdog/test/not-hotdog/1206.png  
 extracting: hotdog/test/not-hotdog/1246.png  
  inflating: hotdog/test/not-hotdog/1227.png  
  inflating: hotdog/test/not-hotdog/1079.png  
 extracting: hotdog/test/not-hotdog/1297.png  
 extracting: hotdog/test/not-hotdog/1378.png  
  inflating: hotdog/test/not-hotdog/1286.png  
 extracting: hotdog/test/not-hotdog/1045.png  
  inflating: hotdog/test/not-hotdog/1138.png  
  inflating: hotdog/test/not-hotdog/1299.png  
  inflating: hotdog/test/not-hotdog/1118.png  
  inflating: hotdog/test/not-hotdog/1047.png  
  inflating: hotdog/test/not-hotdog/1303.png  
 extracting: hotdog/test/not-hotdog/1089.png  
 extracting: hotdog/test/not-hotdog/1033.png  
 extracting: hotdog/test/not-hotdog/1205.png  
  inflating: hotdog/test/not-hotdog/1073.png  
  inflating: hotdog/test/not-hotdog/1305.png  
  inflating: hotdog/test/not-hotdog/1195.png  
  inflating: hotdog/test/not-hotdog/1371.png  
  inflating: hotdog/test/not-hotdog/1392.png  
  inflating: hotdog/test/not-hotdog/1024.png  
  inflating: hotdog/test/not-hotdog/1319.png  
  inflating: hotdog/test/not-hotdog/1287.png  
 extracting: hotdog/test/not-hotdog/1048.png  
  inflating: hotdog/test/not-hotdog/1155.png  
  inflating: hotdog/test/not-hotdog/1217.png  
 extracting: hotdog/test/not-hotdog/1060.png  
 extracting: hotdog/test/not-hotdog/1203.png  
  inflating: hotdog/test/not-hotdog/1090.png  
  inflating: hotdog/test/not-hotdog/1304.png  
  inflating: hotdog/test/not-hotdog/1063.png  
  inflating: hotdog/test/not-hotdog/1387.png  
 extracting: hotdog/test/not-hotdog/1267.png  
  inflating: hotdog/test/not-hotdog/1219.png  
 extracting: hotdog/test/not-hotdog/1182.png  
  inflating: hotdog/test/not-hotdog/1012.png  
  inflating: hotdog/test/not-hotdog/1139.png  
 extracting: hotdog/test/not-hotdog/1257.png  
  inflating: hotdog/test/not-hotdog/1281.png  
 extracting: hotdog/test/not-hotdog/1315.png  
  inflating: hotdog/test/not-hotdog/1028.png  
  inflating: hotdog/test/not-hotdog/1220.png  
  inflating: hotdog/test/not-hotdog/1116.png  
  inflating: hotdog/test/not-hotdog/1191.png  
  inflating: hotdog/test/not-hotdog/1188.png  
  inflating: hotdog/test/not-hotdog/1391.png  
  inflating: hotdog/test/not-hotdog/1034.png  
  inflating: hotdog/test/not-hotdog/1181.png  
 extracting: hotdog/test/not-hotdog/1354.png  
  inflating: hotdog/test/not-hotdog/1105.png  
  inflating: hotdog/test/not-hotdog/1144.png  
  inflating: hotdog/test/not-hotdog/1252.png  
  inflating: hotdog/test/not-hotdog/1249.png  
 extracting: hotdog/test/not-hotdog/1035.png  
 extracting: hotdog/test/not-hotdog/1365.png  
 extracting: hotdog/test/not-hotdog/1347.png  
 extracting: hotdog/test/not-hotdog/1005.png  
 extracting: hotdog/test/not-hotdog/1361.png  
  inflating: hotdog/test/not-hotdog/1038.png  
  inflating: hotdog/test/not-hotdog/1357.png  
 extracting: hotdog/test/not-hotdog/1070.png  
  inflating: hotdog/test/not-hotdog/1399.png  
  inflating: hotdog/test/not-hotdog/1113.png  
  inflating: hotdog/test/not-hotdog/1167.png  
  inflating: hotdog/test/not-hotdog/1112.png  
  inflating: hotdog/test/not-hotdog/1384.png  
 extracting: hotdog/test/not-hotdog/1213.png  
  inflating: hotdog/test/not-hotdog/1342.png  
 extracting: hotdog/test/not-hotdog/1362.png  
  inflating: hotdog/test/not-hotdog/1085.png  
  inflating: hotdog/test/not-hotdog/1131.png  
  inflating: hotdog/test/not-hotdog/1027.png  
  inflating: hotdog/test/not-hotdog/1002.png  
 extracting: hotdog/test/not-hotdog/1254.png  
 extracting: hotdog/test/not-hotdog/1291.png  
  inflating: hotdog/test/not-hotdog/1259.png  
  inflating: hotdog/test/not-hotdog/1121.png  
 extracting: hotdog/test/not-hotdog/1154.png  
  inflating: hotdog/test/not-hotdog/1279.png  
 extracting: hotdog/test/not-hotdog/1044.png  
 extracting: hotdog/test/not-hotdog/1314.png  
  inflating: hotdog/test/not-hotdog/1087.png  
  inflating: hotdog/test/not-hotdog/1311.png  
  inflating: hotdog/test/not-hotdog/1095.png  
 extracting: hotdog/test/not-hotdog/1056.png  
  inflating: hotdog/test/not-hotdog/1289.png  
  inflating: hotdog/test/not-hotdog/1351.png  
  inflating: hotdog/test/not-hotdog/1355.png  
 extracting: hotdog/test/not-hotdog/1352.png  
  inflating: hotdog/test/not-hotdog/1046.png  
 extracting: hotdog/test/not-hotdog/1052.png  
  inflating: hotdog/test/not-hotdog/1043.png  
 extracting: hotdog/test/not-hotdog/1356.png  
  inflating: hotdog/test/not-hotdog/1146.png  
 extracting: hotdog/test/not-hotdog/1283.png  
 extracting: hotdog/test/not-hotdog/1127.png  
  inflating: hotdog/test/not-hotdog/1107.png  
  inflating: hotdog/test/not-hotdog/1248.png  
  inflating: hotdog/test/not-hotdog/1376.png  
 extracting: hotdog/test/not-hotdog/1264.png  
 extracting: hotdog/test/not-hotdog/1394.png  
  inflating: hotdog/test/not-hotdog/1278.png  
 extracting: hotdog/test/not-hotdog/1120.png  
 extracting: hotdog/test/not-hotdog/1226.png  
 extracting: hotdog/test/not-hotdog/1323.png  
 extracting: hotdog/test/not-hotdog/1076.png  
  inflating: hotdog/test/not-hotdog/1083.png  
  inflating: hotdog/test/not-hotdog/1218.png  
 extracting: hotdog/test/not-hotdog/1363.png  
  inflating: hotdog/test/not-hotdog/1092.png  
  inflating: hotdog/test/not-hotdog/1014.png  
  inflating: hotdog/test/not-hotdog/1320.png  
  inflating: hotdog/test/not-hotdog/1074.png  
 extracting: hotdog/test/not-hotdog/1306.png  
  inflating: hotdog/test/not-hotdog/1081.png  
  inflating: hotdog/test/not-hotdog/1212.png  
  inflating: hotdog/test/not-hotdog/1251.png  
 extracting: hotdog/test/not-hotdog/1348.png  
  inflating: hotdog/test/not-hotdog/1166.png  
  inflating: hotdog/test/not-hotdog/1262.png  
  inflating: hotdog/test/not-hotdog/1300.png  
  inflating: hotdog/test/not-hotdog/1263.png  
  inflating: hotdog/test/not-hotdog/1360.png  
 extracting: hotdog/test/not-hotdog/1136.png  
  inflating: hotdog/test/not-hotdog/1164.png  
  inflating: hotdog/test/not-hotdog/1042.png  
  inflating: hotdog/test/not-hotdog/1340.png  
  inflating: hotdog/test/not-hotdog/1007.png  
  inflating: hotdog/test/not-hotdog/1302.png  
  inflating: hotdog/test/not-hotdog/1165.png  
  inflating: hotdog/test/not-hotdog/1031.png  
  inflating: hotdog/test/not-hotdog/1059.png  
  inflating: hotdog/test/not-hotdog/1137.png  
  inflating: hotdog/test/not-hotdog/1337.png  
  inflating: hotdog/test/not-hotdog/1225.png  
  inflating: hotdog/test/not-hotdog/1096.png  
 extracting: hotdog/test/not-hotdog/1308.png  
 extracting: hotdog/test/not-hotdog/1214.png  
  inflating: hotdog/test/not-hotdog/1037.png  
  inflating: hotdog/test/not-hotdog/1386.png  
  inflating: hotdog/test/not-hotdog/1250.png  
  inflating: hotdog/test/not-hotdog/1050.png  
  inflating: hotdog/test/not-hotdog/1318.png  
  inflating: hotdog/test/not-hotdog/1322.png  
  inflating: hotdog/test/not-hotdog/1020.png  
  inflating: hotdog/test/not-hotdog/1325.png  
  inflating: hotdog/test/not-hotdog/1238.png  
  inflating: hotdog/test/not-hotdog/1364.png  
  inflating: hotdog/test/not-hotdog/1098.png  
 extracting: hotdog/test/not-hotdog/1298.png  
 extracting: hotdog/test/not-hotdog/1296.png  
  inflating: hotdog/test/not-hotdog/1153.png  
  inflating: hotdog/test/not-hotdog/1025.png  
  inflating: hotdog/test/not-hotdog/1294.png  
  inflating: hotdog/test/not-hotdog/1117.png  
 extracting: hotdog/test/not-hotdog/1062.png  
  inflating: hotdog/test/not-hotdog/1017.png  
  inflating: hotdog/test/not-hotdog/1276.png  
 extracting: hotdog/test/not-hotdog/1011.png  
  inflating: hotdog/test/not-hotdog/1273.png  
  inflating: hotdog/test/not-hotdog/1317.png  
 extracting: hotdog/test/not-hotdog/1122.png  
  inflating: hotdog/test/not-hotdog/1346.png  
  inflating: hotdog/test/not-hotdog/1134.png  
  inflating: hotdog/test/not-hotdog/1115.png  
  inflating: hotdog/test/not-hotdog/1245.png  
 extracting: hotdog/test/not-hotdog/1270.png  
  inflating: hotdog/test/not-hotdog/1084.png  
  inflating: hotdog/test/not-hotdog/1390.png  
  inflating: hotdog/test/not-hotdog/1269.png  
  inflating: hotdog/test/not-hotdog/1330.png  
  inflating: hotdog/test/not-hotdog/1189.png  
  inflating: hotdog/test/not-hotdog/1022.png  
  inflating: hotdog/test/not-hotdog/1173.png  
 extracting: hotdog/test/not-hotdog/1288.png  
  inflating: hotdog/test/not-hotdog/1239.png  
 extracting: hotdog/test/not-hotdog/1256.png  
  inflating: hotdog/test/not-hotdog/1343.png  
  inflating: hotdog/test/not-hotdog/1193.png  
  inflating: hotdog/test/not-hotdog/1103.png  
  inflating: hotdog/test/not-hotdog/1333.png  
 extracting: hotdog/test/not-hotdog/1204.png  
  inflating: hotdog/test/not-hotdog/1194.png  
  inflating: hotdog/test/not-hotdog/1008.png  
 extracting: hotdog/test/not-hotdog/1215.png  
  inflating: hotdog/test/not-hotdog/1295.png  
  inflating: hotdog/test/not-hotdog/1150.png  
  inflating: hotdog/test/not-hotdog/1242.png  
  inflating: hotdog/test/not-hotdog/1210.png  
  inflating: hotdog/test/not-hotdog/1396.png  
  inflating: hotdog/test/not-hotdog/1055.png  
  inflating: hotdog/test/not-hotdog/1086.png  
  inflating: hotdog/test/not-hotdog/1258.png  
  inflating: hotdog/test/not-hotdog/1145.png  
  inflating: hotdog/test/not-hotdog/1338.png  
  inflating: hotdog/test/not-hotdog/1202.png  
  inflating: hotdog/test/not-hotdog/1353.png  
  inflating: hotdog/test/not-hotdog/1290.png  
 extracting: hotdog/test/not-hotdog/1132.png  
  inflating: hotdog/test/not-hotdog/1235.png  
  inflating: hotdog/test/not-hotdog/1039.png  
 extracting: hotdog/test/not-hotdog/1266.png  
  inflating: hotdog/test/not-hotdog/1023.png  
  inflating: hotdog/test/not-hotdog/1123.png  
  inflating: hotdog/test/not-hotdog/1163.png  
  inflating: hotdog/test/not-hotdog/1111.png  
  inflating: hotdog/test/not-hotdog/1057.png  
  inflating: hotdog/test/not-hotdog/1369.png  
 extracting: hotdog/test/not-hotdog/1331.png  
 extracting: hotdog/test/not-hotdog/1366.png  
 extracting: hotdog/test/not-hotdog/1237.png  
  inflating: hotdog/test/not-hotdog/1307.png  
  inflating: hotdog/test/not-hotdog/1313.png  
  inflating: hotdog/test/not-hotdog/1312.png  
  inflating: hotdog/test/not-hotdog/1126.png  
  inflating: hotdog/test/not-hotdog/1161.png  
  inflating: hotdog/test/not-hotdog/1003.png  
  inflating: hotdog/test/not-hotdog/1018.png  
  inflating: hotdog/test/not-hotdog/1280.png  
  inflating: hotdog/test/not-hotdog/1158.png  
  inflating: hotdog/test/not-hotdog/1128.png  
 extracting: hotdog/test/not-hotdog/1359.png  
  inflating: hotdog/test/not-hotdog/1341.png  
  inflating: hotdog/test/not-hotdog/1375.png  
 extracting: hotdog/test/not-hotdog/1149.png  
 extracting: hotdog/test/not-hotdog/1241.png  
 extracting: hotdog/test/not-hotdog/1094.png  
  inflating: hotdog/test/not-hotdog/1129.png  
  inflating: hotdog/test/not-hotdog/1332.png  
  inflating: hotdog/test/not-hotdog/1196.png  
  inflating: hotdog/test/not-hotdog/1004.png  
  inflating: hotdog/test/not-hotdog/1316.png  
  inflating: hotdog/test/not-hotdog/1231.png  
 extracting: hotdog/test/not-hotdog/1328.png  
  inflating: hotdog/test/not-hotdog/1174.png  
  inflating: hotdog/test/not-hotdog/1051.png  
  inflating: hotdog/test/not-hotdog/1207.png  
  inflating: hotdog/test/not-hotdog/1234.png  
  inflating: hotdog/test/not-hotdog/1125.png  
  inflating: hotdog/test/not-hotdog/1370.png  
  inflating: hotdog/test/not-hotdog/1054.png  
 extracting: hotdog/test/not-hotdog/1228.png  
  inflating: hotdog/test/not-hotdog/1109.png  
 extracting: hotdog/test/not-hotdog/1013.png  
 extracting: hotdog/test/not-hotdog/1240.png  
 extracting: hotdog/test/not-hotdog/1176.png  
  inflating: hotdog/test/not-hotdog/1216.png  
  inflating: hotdog/test/not-hotdog/1106.png  
  inflating: hotdog/test/not-hotdog/1159.png  
  inflating: hotdog/test/not-hotdog/1185.png  
 extracting: hotdog/test/not-hotdog/1064.png  
  inflating: hotdog/test/not-hotdog/1190.png  
 extracting: hotdog/test/not-hotdog/1066.png  
  inflating: hotdog/test/not-hotdog/1156.png  
  inflating: hotdog/test/not-hotdog/1192.png  
 extracting: hotdog/test/not-hotdog/1301.png  
  inflating: hotdog/test/not-hotdog/1255.png  
  inflating: hotdog/test/not-hotdog/1026.png  
  inflating: hotdog/test/not-hotdog/1110.png  
  inflating: hotdog/test/not-hotdog/1088.png  
 extracting: hotdog/test/not-hotdog/1180.png  
  inflating: hotdog/test/not-hotdog/1160.png  
  inflating: hotdog/test/not-hotdog/1282.png  
 extracting: hotdog/test/not-hotdog/1285.png  
 extracting: hotdog/test/not-hotdog/1032.png  
  inflating: hotdog/test/not-hotdog/1133.png  
  inflating: hotdog/test/not-hotdog/1049.png  
  inflating: hotdog/test/not-hotdog/1162.png  
 extracting: hotdog/test/not-hotdog/1151.png  
  inflating: hotdog/test/not-hotdog/1271.png  
  inflating: hotdog/test/not-hotdog/1006.png  
  inflating: hotdog/test/not-hotdog/1326.png  
  inflating: hotdog/test/not-hotdog/1143.png  
  inflating: hotdog/test/not-hotdog/1236.png  
 extracting: hotdog/test/not-hotdog/1272.png  
  inflating: hotdog/test/not-hotdog/1244.png  
  inflating: hotdog/test/not-hotdog/1367.png  
  inflating: hotdog/test/not-hotdog/1277.png  
 extracting: hotdog/test/not-hotdog/1381.png  
 extracting: hotdog/test/not-hotdog/1389.png  
  inflating: hotdog/test/not-hotdog/1372.png  
 extracting: hotdog/test/not-hotdog/1093.png  
 extracting: hotdog/test/not-hotdog/1069.png  
  inflating: hotdog/test/not-hotdog/1385.png  
  inflating: hotdog/test/not-hotdog/1209.png  
 extracting: hotdog/test/not-hotdog/1177.png  
  inflating: hotdog/test/not-hotdog/1324.png  
  inflating: hotdog/test/not-hotdog/1224.png  
  inflating: hotdog/test/not-hotdog/1100.png  
  inflating: hotdog/test/not-hotdog/1339.png  
 extracting: hotdog/test/not-hotdog/1148.png  
  inflating: hotdog/test/not-hotdog/1284.png  
  inflating: hotdog/test/not-hotdog/1208.png  
 extracting: hotdog/test/not-hotdog/1078.png  
 extracting: hotdog/test/not-hotdog/1334.png  
  inflating: hotdog/test/not-hotdog/1019.png  
  inflating: hotdog/test/not-hotdog/1141.png  
  inflating: hotdog/test/not-hotdog/1130.png  
 extracting: hotdog/test/not-hotdog/1265.png  
  inflating: hotdog/test/not-hotdog/1229.png  
  inflating: hotdog/test/not-hotdog/1175.png  
  inflating: hotdog/test/not-hotdog/1261.png  
  inflating: hotdog/test/not-hotdog/1157.png  
  inflating: hotdog/test/not-hotdog/1053.png  
  inflating: hotdog/test/not-hotdog/1152.png  
  inflating: hotdog/test/not-hotdog/1268.png  
  inflating: hotdog/test/not-hotdog/1350.png  
  inflating: hotdog/test/not-hotdog/1232.png  
 extracting: hotdog/test/not-hotdog/1021.png  
  inflating: hotdog/test/not-hotdog/1140.png  
  inflating: hotdog/test/not-hotdog/1230.png  
  inflating: hotdog/test/not-hotdog/1099.png  
  inflating: hotdog/test/not-hotdog/1104.png  
 extracting: hotdog/test/not-hotdog/1398.png  
 extracting: hotdog/test/not-hotdog/1075.png  
  inflating: hotdog/test/not-hotdog/1178.png  
  inflating: hotdog/test/not-hotdog/1260.png  
  inflating: hotdog/test/not-hotdog/1393.png  
  inflating: hotdog/test/not-hotdog/1102.png  
 extracting: hotdog/test/not-hotdog/1009.png  
  inflating: hotdog/test/not-hotdog/1321.png  
  inflating: hotdog/test/not-hotdog/1368.png  
  inflating: hotdog/test/not-hotdog/1233.png  
  inflating: hotdog/test/not-hotdog/1309.png  
  inflating: hotdog/test/not-hotdog/1147.png  
  inflating: hotdog/test/not-hotdog/1119.png  
  inflating: hotdog/test/not-hotdog/1016.png  
  inflating: hotdog/test/not-hotdog/1199.png  
 extracting: hotdog/test/not-hotdog/1001.png  
  inflating: hotdog/test/not-hotdog/1201.png  
  inflating: hotdog/test/not-hotdog/1293.png  
  inflating: hotdog/test/not-hotdog/1108.png  
  inflating: hotdog/test/not-hotdog/1071.png  
  inflating: hotdog/test/not-hotdog/1169.png  
  inflating: hotdog/test/not-hotdog/1058.png  
  inflating: hotdog/test/not-hotdog/1345.png  
 extracting: hotdog/test/not-hotdog/1068.png  
 extracting: hotdog/test/not-hotdog/1135.png  
  inflating: hotdog/test/not-hotdog/1211.png  
  inflating: hotdog/test/not-hotdog/1275.png  
  inflating: hotdog/test/not-hotdog/1336.png  
  inflating: hotdog/test/not-hotdog/1040.png  
  inflating: hotdog/test/not-hotdog/1142.png  
  inflating: hotdog/test/not-hotdog/1101.png  
  inflating: hotdog/test/not-hotdog/1197.png  
  inflating: hotdog/test/not-hotdog/1036.png  
  inflating: hotdog/test/not-hotdog/1170.png  
  inflating: hotdog/test/not-hotdog/1373.png  
  inflating: hotdog/test/not-hotdog/1082.png  
  inflating: hotdog/test/not-hotdog/1000.png  
  inflating: hotdog/test/not-hotdog/1171.png  
 extracting: hotdog/test/not-hotdog/1065.png  
  inflating: hotdog/test/not-hotdog/1349.png  
  inflating: hotdog/test/not-hotdog/1198.png  
  inflating: hotdog/test/not-hotdog/1222.png  
  inflating: hotdog/test/not-hotdog/1077.png  
  inflating: hotdog/test/not-hotdog/1335.png  
 extracting: hotdog/test/not-hotdog/1080.png  
  inflating: hotdog/test/not-hotdog/1091.png  
 extracting: hotdog/test/not-hotdog/1184.png  
  inflating: hotdog/test/not-hotdog/1327.png  
 extracting: hotdog/test/not-hotdog/1358.png  
 extracting: hotdog/test/not-hotdog/1061.png  
  inflating: hotdog/test/not-hotdog/1179.png  
  inflating: hotdog/test/not-hotdog/1329.png  
  inflating: hotdog/test/not-hotdog/1274.png  
  inflating: hotdog/test/not-hotdog/1344.png  
  inflating: hotdog/test/not-hotdog/1221.png  
  inflating: hotdog/test/not-hotdog/1374.png  
  inflating: hotdog/test/not-hotdog/1029.png  
  inflating: hotdog/test/not-hotdog/1395.png  
  inflating: hotdog/test/not-hotdog/1310.png  
  inflating: hotdog/test/not-hotdog/1397.png  
  inflating: hotdog/test/not-hotdog/1243.png  
  inflating: hotdog/test/not-hotdog/1292.png  
 extracting: hotdog/test/not-hotdog/1010.png  
  inflating: hotdog/test/not-hotdog/1187.png  
  inflating: hotdog/test/not-hotdog/1223.png  
 extracting: hotdog/test/not-hotdog/1041.png  
  inflating: hotdog/test/not-hotdog/1253.png  
  inflating: hotdog/test/not-hotdog/1168.png  
  inflating: hotdog/test/not-hotdog/1183.png  
  inflating: hotdog/test/not-hotdog/1382.png  
  inflating: hotdog/test/not-hotdog/1124.png  
  inflating: hotdog/test/not-hotdog/1097.png  
  inflating: hotdog/test/not-hotdog/1072.png  
   creating: hotdog/test/hotdog/
  inflating: hotdog/test/hotdog/1379.png  
  inflating: hotdog/test/hotdog/1388.png  
 extracting: hotdog/test/hotdog/1067.png  
  inflating: hotdog/test/hotdog/1383.png  
  inflating: hotdog/test/hotdog/1377.png  
  inflating: hotdog/test/hotdog/1015.png  
  inflating: hotdog/test/hotdog/1172.png  
  inflating: hotdog/test/hotdog/1030.png  
  inflating: hotdog/test/hotdog/1114.png  
  inflating: hotdog/test/hotdog/1186.png  
  inflating: hotdog/test/hotdog/1200.png  
  inflating: hotdog/test/hotdog/1380.png  
 extracting: hotdog/test/hotdog/1247.png  
  inflating: hotdog/test/hotdog/1206.png  
  inflating: hotdog/test/hotdog/1246.png  
  inflating: hotdog/test/hotdog/1227.png  
  inflating: hotdog/test/hotdog/1079.png  
  inflating: hotdog/test/hotdog/1297.png  
  inflating: hotdog/test/hotdog/1378.png  
  inflating: hotdog/test/hotdog/1286.png  
  inflating: hotdog/test/hotdog/1045.png  
  inflating: hotdog/test/hotdog/1138.png  
  inflating: hotdog/test/hotdog/1299.png  
  inflating: hotdog/test/hotdog/1118.png  
  inflating: hotdog/test/hotdog/1047.png  
  inflating: hotdog/test/hotdog/1303.png  
  inflating: hotdog/test/hotdog/1089.png  
  inflating: hotdog/test/hotdog/1033.png  
  inflating: hotdog/test/hotdog/1205.png  
  inflating: hotdog/test/hotdog/1073.png  
  inflating: hotdog/test/hotdog/1305.png  
  inflating: hotdog/test/hotdog/1195.png  
 extracting: hotdog/test/hotdog/1371.png  
  inflating: hotdog/test/hotdog/1392.png  
  inflating: hotdog/test/hotdog/1024.png  
 extracting: hotdog/test/hotdog/1319.png  
  inflating: hotdog/test/hotdog/1287.png  
  inflating: hotdog/test/hotdog/1048.png  
  inflating: hotdog/test/hotdog/1155.png  
 extracting: hotdog/test/hotdog/1217.png  
  inflating: hotdog/test/hotdog/1060.png  
  inflating: hotdog/test/hotdog/1203.png  
  inflating: hotdog/test/hotdog/1090.png  
  inflating: hotdog/test/hotdog/1304.png  
 extracting: hotdog/test/hotdog/1063.png  
  inflating: hotdog/test/hotdog/1387.png  
  inflating: hotdog/test/hotdog/1267.png  
 extracting: hotdog/test/hotdog/1219.png  
 extracting: hotdog/test/hotdog/1182.png  
  inflating: hotdog/test/hotdog/1012.png  
  inflating: hotdog/test/hotdog/1139.png  
  inflating: hotdog/test/hotdog/1257.png  
  inflating: hotdog/test/hotdog/1281.png  
  inflating: hotdog/test/hotdog/1315.png  
  inflating: hotdog/test/hotdog/1028.png  
 extracting: hotdog/test/hotdog/1220.png  
  inflating: hotdog/test/hotdog/1116.png  
  inflating: hotdog/test/hotdog/1191.png  
  inflating: hotdog/test/hotdog/1188.png  
  inflating: hotdog/test/hotdog/1391.png  
  inflating: hotdog/test/hotdog/1034.png  
  inflating: hotdog/test/hotdog/1181.png  
  inflating: hotdog/test/hotdog/1354.png  
  inflating: hotdog/test/hotdog/1105.png  
 extracting: hotdog/test/hotdog/1144.png  
  inflating: hotdog/test/hotdog/1252.png  
  inflating: hotdog/test/hotdog/1249.png  
 extracting: hotdog/test/hotdog/1035.png  
 extracting: hotdog/test/hotdog/1365.png  
 extracting: hotdog/test/hotdog/1347.png  
  inflating: hotdog/test/hotdog/1005.png  
 extracting: hotdog/test/hotdog/1361.png  
  inflating: hotdog/test/hotdog/1038.png  
  inflating: hotdog/test/hotdog/1357.png  
  inflating: hotdog/test/hotdog/1070.png  
 extracting: hotdog/test/hotdog/1399.png  
 extracting: hotdog/test/hotdog/1113.png  
  inflating: hotdog/test/hotdog/1167.png  
  inflating: hotdog/test/hotdog/1112.png  
  inflating: hotdog/test/hotdog/1384.png  
  inflating: hotdog/test/hotdog/1213.png  
 extracting: hotdog/test/hotdog/1342.png  
  inflating: hotdog/test/hotdog/1362.png  
 extracting: hotdog/test/hotdog/1085.png  
  inflating: hotdog/test/hotdog/1131.png  
  inflating: hotdog/test/hotdog/1027.png  
  inflating: hotdog/test/hotdog/1002.png  
  inflating: hotdog/test/hotdog/1254.png  
  inflating: hotdog/test/hotdog/1291.png  
  inflating: hotdog/test/hotdog/1259.png  
  inflating: hotdog/test/hotdog/1121.png  
  inflating: hotdog/test/hotdog/1154.png  
  inflating: hotdog/test/hotdog/1279.png  
  inflating: hotdog/test/hotdog/1044.png  
  inflating: hotdog/test/hotdog/1314.png  
  inflating: hotdog/test/hotdog/1087.png  
  inflating: hotdog/test/hotdog/1311.png  
  inflating: hotdog/test/hotdog/1095.png  
  inflating: hotdog/test/hotdog/1056.png  
  inflating: hotdog/test/hotdog/1289.png  
  inflating: hotdog/test/hotdog/1351.png  
  inflating: hotdog/test/hotdog/1355.png  
  inflating: hotdog/test/hotdog/1352.png  
  inflating: hotdog/test/hotdog/1046.png  
  inflating: hotdog/test/hotdog/1052.png  
 extracting: hotdog/test/hotdog/1043.png  
  inflating: hotdog/test/hotdog/1356.png  
  inflating: hotdog/test/hotdog/1146.png  
  inflating: hotdog/test/hotdog/1283.png  
  inflating: hotdog/test/hotdog/1127.png  
  inflating: hotdog/test/hotdog/1107.png  
  inflating: hotdog/test/hotdog/1248.png  
  inflating: hotdog/test/hotdog/1376.png  
  inflating: hotdog/test/hotdog/1264.png  
  inflating: hotdog/test/hotdog/1394.png  
  inflating: hotdog/test/hotdog/1278.png  
 extracting: hotdog/test/hotdog/1120.png  
 extracting: hotdog/test/hotdog/1226.png  
  inflating: hotdog/test/hotdog/1323.png  
 extracting: hotdog/test/hotdog/1076.png  
 extracting: hotdog/test/hotdog/1083.png  
 extracting: hotdog/test/hotdog/1218.png  
  inflating: hotdog/test/hotdog/1363.png  
  inflating: hotdog/test/hotdog/1092.png  
  inflating: hotdog/test/hotdog/1014.png  
  inflating: hotdog/test/hotdog/1320.png  
  inflating: hotdog/test/hotdog/1074.png  
  inflating: hotdog/test/hotdog/1306.png  
 extracting: hotdog/test/hotdog/1081.png  
  inflating: hotdog/test/hotdog/1212.png  
  inflating: hotdog/test/hotdog/1251.png  
  inflating: hotdog/test/hotdog/1348.png  
  inflating: hotdog/test/hotdog/1166.png  
  inflating: hotdog/test/hotdog/1262.png  
  inflating: hotdog/test/hotdog/1300.png  
  inflating: hotdog/test/hotdog/1263.png  
 extracting: hotdog/test/hotdog/1360.png  
  inflating: hotdog/test/hotdog/1136.png  
  inflating: hotdog/test/hotdog/1164.png  
 extracting: hotdog/test/hotdog/1042.png  
 extracting: hotdog/test/hotdog/1340.png  
 extracting: hotdog/test/hotdog/1007.png  
  inflating: hotdog/test/hotdog/1302.png  
  inflating: hotdog/test/hotdog/1165.png  
  inflating: hotdog/test/hotdog/1031.png  
  inflating: hotdog/test/hotdog/1059.png  
 extracting: hotdog/test/hotdog/1137.png  
  inflating: hotdog/test/hotdog/1337.png  
  inflating: hotdog/test/hotdog/1225.png  
  inflating: hotdog/test/hotdog/1096.png  
  inflating: hotdog/test/hotdog/1308.png  
  inflating: hotdog/test/hotdog/1214.png  
  inflating: hotdog/test/hotdog/1037.png  
  inflating: hotdog/test/hotdog/1386.png  
  inflating: hotdog/test/hotdog/1250.png  
  inflating: hotdog/test/hotdog/1050.png  
 extracting: hotdog/test/hotdog/1318.png  
  inflating: hotdog/test/hotdog/1322.png  
  inflating: hotdog/test/hotdog/1020.png  
  inflating: hotdog/test/hotdog/1325.png  
  inflating: hotdog/test/hotdog/1238.png  
  inflating: hotdog/test/hotdog/1364.png  
 extracting: hotdog/test/hotdog/1098.png  
  inflating: hotdog/test/hotdog/1298.png  
  inflating: hotdog/test/hotdog/1296.png  
  inflating: hotdog/test/hotdog/1153.png  
  inflating: hotdog/test/hotdog/1025.png  
  inflating: hotdog/test/hotdog/1294.png  
  inflating: hotdog/test/hotdog/1117.png  
 extracting: hotdog/test/hotdog/1062.png  
  inflating: hotdog/test/hotdog/1017.png  
  inflating: hotdog/test/hotdog/1276.png  
  inflating: hotdog/test/hotdog/1011.png  
  inflating: hotdog/test/hotdog/1273.png  
 extracting: hotdog/test/hotdog/1317.png  
  inflating: hotdog/test/hotdog/1122.png  
 extracting: hotdog/test/hotdog/1346.png  
  inflating: hotdog/test/hotdog/1134.png  
  inflating: hotdog/test/hotdog/1115.png  
  inflating: hotdog/test/hotdog/1245.png  
  inflating: hotdog/test/hotdog/1270.png  
 extracting: hotdog/test/hotdog/1084.png  
  inflating: hotdog/test/hotdog/1390.png  
  inflating: hotdog/test/hotdog/1269.png  
  inflating: hotdog/test/hotdog/1330.png  
  inflating: hotdog/test/hotdog/1189.png  
 extracting: hotdog/test/hotdog/1022.png  
  inflating: hotdog/test/hotdog/1173.png  
 extracting: hotdog/test/hotdog/1288.png  
  inflating: hotdog/test/hotdog/1239.png  
  inflating: hotdog/test/hotdog/1256.png  
 extracting: hotdog/test/hotdog/1343.png  
  inflating: hotdog/test/hotdog/1193.png  
  inflating: hotdog/test/hotdog/1103.png  
  inflating: hotdog/test/hotdog/1333.png  
  inflating: hotdog/test/hotdog/1204.png  
  inflating: hotdog/test/hotdog/1194.png  
  inflating: hotdog/test/hotdog/1008.png  
  inflating: hotdog/test/hotdog/1215.png  
  inflating: hotdog/test/hotdog/1295.png  
  inflating: hotdog/test/hotdog/1150.png  
  inflating: hotdog/test/hotdog/1242.png  
  inflating: hotdog/test/hotdog/1210.png  
 extracting: hotdog/test/hotdog/1396.png  
  inflating: hotdog/test/hotdog/1055.png  
 extracting: hotdog/test/hotdog/1086.png  
  inflating: hotdog/test/hotdog/1258.png  
  inflating: hotdog/test/hotdog/1145.png  
  inflating: hotdog/test/hotdog/1338.png  
  inflating: hotdog/test/hotdog/1202.png  
  inflating: hotdog/test/hotdog/1353.png  
  inflating: hotdog/test/hotdog/1290.png  
  inflating: hotdog/test/hotdog/1132.png  
 extracting: hotdog/test/hotdog/1235.png  
  inflating: hotdog/test/hotdog/1039.png  
  inflating: hotdog/test/hotdog/1266.png  
  inflating: hotdog/test/hotdog/1023.png  
  inflating: hotdog/test/hotdog/1123.png  
  inflating: hotdog/test/hotdog/1163.png  
  inflating: hotdog/test/hotdog/1111.png  
 extracting: hotdog/test/hotdog/1057.png  
 extracting: hotdog/test/hotdog/1369.png  
  inflating: hotdog/test/hotdog/1331.png  
 extracting: hotdog/test/hotdog/1366.png  
  inflating: hotdog/test/hotdog/1237.png  
 extracting: hotdog/test/hotdog/1307.png  
  inflating: hotdog/test/hotdog/1313.png  
  inflating: hotdog/test/hotdog/1312.png  
  inflating: hotdog/test/hotdog/1126.png  
  inflating: hotdog/test/hotdog/1161.png  
  inflating: hotdog/test/hotdog/1003.png  
  inflating: hotdog/test/hotdog/1018.png  
  inflating: hotdog/test/hotdog/1280.png  
  inflating: hotdog/test/hotdog/1158.png  
  inflating: hotdog/test/hotdog/1128.png  
  inflating: hotdog/test/hotdog/1359.png  
  inflating: hotdog/test/hotdog/1341.png  
  inflating: hotdog/test/hotdog/1375.png  
  inflating: hotdog/test/hotdog/1149.png  
  inflating: hotdog/test/hotdog/1241.png  
  inflating: hotdog/test/hotdog/1094.png  
  inflating: hotdog/test/hotdog/1129.png  
  inflating: hotdog/test/hotdog/1332.png  
 extracting: hotdog/test/hotdog/1196.png  
  inflating: hotdog/test/hotdog/1004.png  
  inflating: hotdog/test/hotdog/1316.png  
  inflating: hotdog/test/hotdog/1231.png  
  inflating: hotdog/test/hotdog/1328.png  
  inflating: hotdog/test/hotdog/1174.png  
  inflating: hotdog/test/hotdog/1051.png  
  inflating: hotdog/test/hotdog/1207.png  
 extracting: hotdog/test/hotdog/1234.png  
  inflating: hotdog/test/hotdog/1125.png  
 extracting: hotdog/test/hotdog/1370.png  
 extracting: hotdog/test/hotdog/1054.png  
  inflating: hotdog/test/hotdog/1228.png  
  inflating: hotdog/test/hotdog/1109.png  
  inflating: hotdog/test/hotdog/1013.png  
  inflating: hotdog/test/hotdog/1240.png  
 extracting: hotdog/test/hotdog/1176.png  
  inflating: hotdog/test/hotdog/1216.png  
  inflating: hotdog/test/hotdog/1106.png  
  inflating: hotdog/test/hotdog/1159.png  
  inflating: hotdog/test/hotdog/1185.png  
 extracting: hotdog/test/hotdog/1064.png  
  inflating: hotdog/test/hotdog/1190.png  
 extracting: hotdog/test/hotdog/1066.png  
 extracting: hotdog/test/hotdog/1156.png  
  inflating: hotdog/test/hotdog/1192.png  
  inflating: hotdog/test/hotdog/1301.png  
  inflating: hotdog/test/hotdog/1255.png  
  inflating: hotdog/test/hotdog/1026.png  
  inflating: hotdog/test/hotdog/1110.png  
  inflating: hotdog/test/hotdog/1088.png  
  inflating: hotdog/test/hotdog/1180.png  
  inflating: hotdog/test/hotdog/1160.png  
  inflating: hotdog/test/hotdog/1282.png  
  inflating: hotdog/test/hotdog/1285.png  
  inflating: hotdog/test/hotdog/1032.png  
  inflating: hotdog/test/hotdog/1133.png  
  inflating: hotdog/test/hotdog/1049.png  
  inflating: hotdog/test/hotdog/1162.png  
 extracting: hotdog/test/hotdog/1151.png  
  inflating: hotdog/test/hotdog/1271.png  
  inflating: hotdog/test/hotdog/1006.png  
  inflating: hotdog/test/hotdog/1326.png  
 extracting: hotdog/test/hotdog/1143.png  
  inflating: hotdog/test/hotdog/1236.png  
  inflating: hotdog/test/hotdog/1272.png  
  inflating: hotdog/test/hotdog/1244.png  
 extracting: hotdog/test/hotdog/1367.png  
  inflating: hotdog/test/hotdog/1277.png  
  inflating: hotdog/test/hotdog/1381.png  
  inflating: hotdog/test/hotdog/1389.png  
  inflating: hotdog/test/hotdog/1372.png  
  inflating: hotdog/test/hotdog/1093.png  
  inflating: hotdog/test/hotdog/1069.png  
  inflating: hotdog/test/hotdog/1385.png  
  inflating: hotdog/test/hotdog/1209.png  
 extracting: hotdog/test/hotdog/1177.png  
  inflating: hotdog/test/hotdog/1324.png  
  inflating: hotdog/test/hotdog/1224.png  
  inflating: hotdog/test/hotdog/1100.png  
  inflating: hotdog/test/hotdog/1339.png  
  inflating: hotdog/test/hotdog/1148.png  
 extracting: hotdog/test/hotdog/1284.png  
  inflating: hotdog/test/hotdog/1208.png  
  inflating: hotdog/test/hotdog/1078.png  
  inflating: hotdog/test/hotdog/1334.png  
  inflating: hotdog/test/hotdog/1019.png  
 extracting: hotdog/test/hotdog/1141.png  
  inflating: hotdog/test/hotdog/1130.png  
  inflating: hotdog/test/hotdog/1265.png  
  inflating: hotdog/test/hotdog/1229.png  
  inflating: hotdog/test/hotdog/1175.png  
  inflating: hotdog/test/hotdog/1261.png  
  inflating: hotdog/test/hotdog/1157.png  
  inflating: hotdog/test/hotdog/1053.png  
  inflating: hotdog/test/hotdog/1152.png  
  inflating: hotdog/test/hotdog/1268.png  
 extracting: hotdog/test/hotdog/1350.png  
  inflating: hotdog/test/hotdog/1232.png  
  inflating: hotdog/test/hotdog/1021.png  
 extracting: hotdog/test/hotdog/1140.png  
  inflating: hotdog/test/hotdog/1230.png  
  inflating: hotdog/test/hotdog/1099.png  
  inflating: hotdog/test/hotdog/1104.png  
  inflating: hotdog/test/hotdog/1398.png  
  inflating: hotdog/test/hotdog/1075.png  
  inflating: hotdog/test/hotdog/1178.png  
  inflating: hotdog/test/hotdog/1260.png  
  inflating: hotdog/test/hotdog/1393.png  
  inflating: hotdog/test/hotdog/1102.png  
  inflating: hotdog/test/hotdog/1009.png  
 extracting: hotdog/test/hotdog/1321.png  
  inflating: hotdog/test/hotdog/1368.png  
  inflating: hotdog/test/hotdog/1233.png  
  inflating: hotdog/test/hotdog/1309.png  
  inflating: hotdog/test/hotdog/1147.png  
 extracting: hotdog/test/hotdog/1119.png  
  inflating: hotdog/test/hotdog/1016.png  
  inflating: hotdog/test/hotdog/1199.png  
  inflating: hotdog/test/hotdog/1001.png  
  inflating: hotdog/test/hotdog/1201.png  
  inflating: hotdog/test/hotdog/1293.png  
  inflating: hotdog/test/hotdog/1108.png  
  inflating: hotdog/test/hotdog/1071.png  
 extracting: hotdog/test/hotdog/1169.png  
  inflating: hotdog/test/hotdog/1058.png  
  inflating: hotdog/test/hotdog/1345.png  
  inflating: hotdog/test/hotdog/1068.png  
  inflating: hotdog/test/hotdog/1135.png  
  inflating: hotdog/test/hotdog/1211.png  
 extracting: hotdog/test/hotdog/1275.png  
  inflating: hotdog/test/hotdog/1336.png  
 extracting: hotdog/test/hotdog/1040.png  
 extracting: hotdog/test/hotdog/1142.png  
  inflating: hotdog/test/hotdog/1101.png  
  inflating: hotdog/test/hotdog/1197.png  
  inflating: hotdog/test/hotdog/1036.png  
  inflating: hotdog/test/hotdog/1170.png  
  inflating: hotdog/test/hotdog/1373.png  
  inflating: hotdog/test/hotdog/1082.png  
 extracting: hotdog/test/hotdog/1000.png  
  inflating: hotdog/test/hotdog/1171.png  
 extracting: hotdog/test/hotdog/1065.png  
  inflating: hotdog/test/hotdog/1349.png  
  inflating: hotdog/test/hotdog/1198.png  
 extracting: hotdog/test/hotdog/1222.png  
  inflating: hotdog/test/hotdog/1077.png  
  inflating: hotdog/test/hotdog/1335.png  
  inflating: hotdog/test/hotdog/1080.png  
  inflating: hotdog/test/hotdog/1091.png  
  inflating: hotdog/test/hotdog/1184.png  
  inflating: hotdog/test/hotdog/1327.png  
 extracting: hotdog/test/hotdog/1358.png  
  inflating: hotdog/test/hotdog/1061.png  
 extracting: hotdog/test/hotdog/1179.png  
  inflating: hotdog/test/hotdog/1329.png  
  inflating: hotdog/test/hotdog/1274.png  
  inflating: hotdog/test/hotdog/1344.png  
 extracting: hotdog/test/hotdog/1221.png  
  inflating: hotdog/test/hotdog/1374.png  
 extracting: hotdog/test/hotdog/1029.png  
  inflating: hotdog/test/hotdog/1395.png  
  inflating: hotdog/test/hotdog/1310.png  
  inflating: hotdog/test/hotdog/1397.png  
  inflating: hotdog/test/hotdog/1243.png  
  inflating: hotdog/test/hotdog/1292.png  
  inflating: hotdog/test/hotdog/1010.png  
 extracting: hotdog/test/hotdog/1187.png  
 extracting: hotdog/test/hotdog/1223.png  
 extracting: hotdog/test/hotdog/1041.png  
  inflating: hotdog/test/hotdog/1253.png  
  inflating: hotdog/test/hotdog/1168.png  
  inflating: hotdog/test/hotdog/1183.png  
  inflating: hotdog/test/hotdog/1382.png  
 extracting: hotdog/test/hotdog/1124.png  
  inflating: hotdog/test/hotdog/1097.png  
  inflating: hotdog/test/hotdog/1072.png  

Kiedy korzystamy z sieci pretrenowanej na zbiorze ImageNet, zgodnie z dokumentacją trzeba dokonać standaryzacji naszych obrazów, odejmując średnią i dzieląc przez odchylenie standardowe każdego kanału ze zbioru ImageNet.

All pre-trained models expect input images normalized in the same way, i.e. mini-batches of 3-channel RGB images of shape (3 x H x W), where H and W are
expected to be at least 224. The images have to be loaded in to a range of [0, 1] and then normalized using mean = [0.485, 0.456, 0.406] and std = [0.229,
0.224, 0.225]. You can use the following transform to normalize:

normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225])

In [24]:
torch.manual_seed(17)

normalize = transforms.Normalize(
    mean=[0.485, 0.456, 0.406],
    std=[0.229, 0.224, 0.225]
)

train_augs = torchvision.transforms.Compose(
    [
        torchvision.transforms.RandomResizedCrop(224),
        torchvision.transforms.RandomHorizontalFlip(),
        torchvision.transforms.ToTensor(),
        normalize,
    ]
)

test_augs = torchvision.transforms.Compose(
    [
        torchvision.transforms.Resize(256),
        torchvision.transforms.CenterCrop(224),
        torchvision.transforms.ToTensor(),
        normalize,
    ]
)
In [25]:
pretrained_net = torchvision.models.resnet18(weights=torchvision.models.ResNet18_Weights.IMAGENET1K_V1)
Downloading: "https://download.pytorch.org/models/resnet18-f37072fd.pth" to /root/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth
100%|██████████| 44.7M/44.7M [00:00<00:00, 116MB/s]
In [26]:
pretrained_net.fc
Out[26]:
Linear(in_features=512, out_features=1000, bias=True)

Zadanie 5 (1 punkt)¶

Zastąp wyjściową warstwę liniową naszej fine-fune'owanej sieci nową warstwą o odpowiedniej liczbie wyjść i zainicjuj ją losowymi wartościami.

In [27]:
finetuned_net = pretrained_net
#in features = 512
finetuned_net.fc = nn.Linear(512,2)
In [28]:
assert finetuned_net.fc.out_features == 2
print("Solution is correct!")
Solution is correct!

Poniżej znajduje się pętla ucząca, która dotrenuje nasz detektor hot-dog-ów.

In [29]:
import time
import copy


def train_model(
    model, dataloaders, criterion, optimizer, num_epochs=25
):
    since = time.time()

    val_acc_history = []

    best_model_wts = copy.deepcopy(model.state_dict())
    best_acc = 0.0

    for epoch in range(1, num_epochs + 1):
        print("Epoch {}/{}".format(epoch, num_epochs))
        print("-" * 10)

        # Each epoch has a training and validation phase
        for phase in ["train", "val"]:
            if phase == "train":
                model.train()  # Set model to training mode
            else:
                model.eval()  # Set model to evaluate mode

            running_loss = 0.0
            running_corrects = 0

            # Iterate over data.
            for inputs, labels in dataloaders[phase]:
                inputs = inputs.to(device)
                labels = labels.to(device)

                # zero the parameter gradients
                optimizer.zero_grad()

                # forward
                # track history if only in train
                with torch.set_grad_enabled(phase == "train"):
                    # Get model outputs and calculate loss

                    outputs = model(inputs)
                    loss = criterion(outputs, labels)
                    _, preds = torch.max(outputs, 1)

                    # backward + optimize only if in training phase
                    if phase == "train":
                        loss.backward()
                        optimizer.step()

                # statistics
                running_loss += loss.item() * inputs.size(0)
                running_corrects += torch.sum(preds == labels.data)

            epoch_loss = running_loss / len(dataloaders[phase].dataset)
            epoch_acc = running_corrects.float() / len(dataloaders[phase].dataset)

            print("{} Loss: {:.4f} Acc: {:.4f}".format(phase, epoch_loss, epoch_acc))

            # deep copy the model
            if phase == "val" and epoch_acc > best_acc:
                best_acc = epoch_acc
                best_model_wts = copy.deepcopy(model.state_dict())
            if phase == "val":
                val_acc_history.append(epoch_acc)

        print()

    time_elapsed = time.time() - since
    print(
        "Training complete in {:.0f}m {:.0f}s".format(
            time_elapsed // 60, time_elapsed % 60
        )
    )
    print("Best val Acc: {:4f}".format(best_acc))

    # load best model weights
    model.load_state_dict(best_model_wts)
    return model, val_acc_history

Fine-tuning...

In [30]:
import os

data_dir = "hotdog"
batch_size = 32

model_ft = finetuned_net.to(device)
train_iter = torch.utils.data.DataLoader(
    torchvision.datasets.ImageFolder(
        os.path.join(data_dir, "train"), transform=train_augs
    ),
    batch_size=batch_size,
    shuffle=True,
)
test_iter = torch.utils.data.DataLoader(
    torchvision.datasets.ImageFolder(
        os.path.join(data_dir, "test"), transform=test_augs
    ),
    shuffle=True,
    batch_size=batch_size,
)
loss = nn.CrossEntropyLoss(reduction="none")

Zadanie 6 (1 punkt)¶

Zmodyfikuj tak parametry sieci, aby learning rate dla ostatniej warstwy był 10 razy wyższy niż dla pozostałych.

Trzeba odpowiednio podać pierwszy parametr torch.optim.SGD tak, aby zawierał parametry normalne, oraz te z lr * 10. Paramety warstw niższych to takie, które mają nazwę inną niż fc.weight albo fc.bias - może się przydać metoda sieci named_parameters().

In [31]:
def train_fine_tuning(net, learning_rate, num_epochs=15):
    final_layer_params = []
    other_params = []

    for name, param in net.named_parameters():
        if "fc.weight" in name or "fc.bias" in name:
            final_layer_params.append(param)
        else:
            other_params.append(param)

    trainer = torch.optim.SGD(
        [
            {"params": other_params},
            {"params": final_layer_params, "lr": learning_rate * 10},
        ],
        lr=learning_rate) # jezeli nie jest sztucznie nadpisany, to lr standardowe, sztucznie nadpisujemy tylko dla ostateniej warstwy.

    dataloaders_dict = {"train": train_iter, "val": test_iter}
    criterion = nn.CrossEntropyLoss()
    model_ft, hist = train_model(
        net, dataloaders_dict, criterion, trainer, num_epochs=num_epochs
    )
    return model_ft, hist
In [32]:
model_ft, hist = train_fine_tuning(model_ft, learning_rate=5e-5)
Epoch 1/15
----------
train Loss: 0.7730 Acc: 0.4610
val Loss: 0.6882 Acc: 0.5813

Epoch 2/15
----------
train Loss: 0.6543 Acc: 0.6030
val Loss: 0.5876 Acc: 0.7125

Epoch 3/15
----------
train Loss: 0.5714 Acc: 0.7210
val Loss: 0.5157 Acc: 0.7775

Epoch 4/15
----------
train Loss: 0.5165 Acc: 0.7695
val Loss: 0.4683 Acc: 0.8100

Epoch 5/15
----------
train Loss: 0.4761 Acc: 0.8075
val Loss: 0.4245 Acc: 0.8562

Epoch 6/15
----------
train Loss: 0.4484 Acc: 0.8225
val Loss: 0.3918 Acc: 0.8725

Epoch 7/15
----------
train Loss: 0.4124 Acc: 0.8465
val Loss: 0.3709 Acc: 0.8787

Epoch 8/15
----------
train Loss: 0.3912 Acc: 0.8615
val Loss: 0.3498 Acc: 0.8900

Epoch 9/15
----------
train Loss: 0.3836 Acc: 0.8570
val Loss: 0.3313 Acc: 0.8937

Epoch 10/15
----------
train Loss: 0.3690 Acc: 0.8625
val Loss: 0.3202 Acc: 0.9000

Epoch 11/15
----------
train Loss: 0.3625 Acc: 0.8570
val Loss: 0.3080 Acc: 0.8950

Epoch 12/15
----------
train Loss: 0.3539 Acc: 0.8765
val Loss: 0.3007 Acc: 0.9062

Epoch 13/15
----------
train Loss: 0.3347 Acc: 0.8805
val Loss: 0.2911 Acc: 0.9062

Epoch 14/15
----------
train Loss: 0.3310 Acc: 0.8840
val Loss: 0.2840 Acc: 0.9075

Epoch 15/15
----------
train Loss: 0.3197 Acc: 0.8790
val Loss: 0.2778 Acc: 0.9100

Training complete in 4m 45s
Best val Acc: 0.910000

skomentuj wyniki:

Widać, że dzięki dużej stałej uczącej szybko byliśmy w stanie wytrenować model tak, aby skutecznie (90 % acc to dobry wynik) rozpoznawał hot dogi. Oczywiście tak niewielkim kosztem udało się to zrobic tylko i wyłącznie przez to, że korzystamy z pretrenowanej dużej sieci.

Przy wyświetlaniu predykcji sieci musimy wykonać operacje odwrotne niż te, które wykonaliśmy, przygotowując obrazy do treningu:

  • zamienić kolejność kanałów z (C, H, W) na (H, W, C)
  • zamienić obraz z tensora na tablicę Numpy'a
  • odwrócić normalizację (mnożymy przez odchylenie standardowe, dodajemy średnią) i upewnić się, że nie wychodzimy poza zakres [0, 1] (wystarczy proste przycięcie wartości)
In [33]:
def imshow(img, title=None):
    img = img.permute(1, 2, 0).numpy()
    means = np.array([0.485, 0.456, 0.406])
    stds = np.array([0.229, 0.224, 0.225])
    img = stds * img + means
    img = np.clip(img, 0, 1)

    plt.imshow(img)
    if title is not None:
        plt.title(title)

    plt.pause(0.001)
In [34]:
import matplotlib.pyplot as plt
plt.ion()


def visualize_model(model, num_images=6):
    class_names = ["hotdog", "other"]
    model.eval()
    images_so_far = 0
    fig = plt.figure()
    with torch.no_grad():
        for i, (inputs, labels) in enumerate(test_iter):
            inputs = inputs.to(device)
            labels = labels.to(device)

            outputs = model(inputs)
            _, preds = torch.max(outputs, 1)

            for j in range(inputs.size()[0]):
                images_so_far += 1
                ax = plt.subplot(num_images // 2, 2, images_so_far)
                ax.axis('off')
                ax.set_title(f'predicted: {class_names[preds[j]]}')

                imshow(inputs.data[j].cpu())

                if images_so_far == num_images:
                    return
In [35]:
visualize_model(model_ft)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Zadanie dodatkowe (3 punkty)¶

W zadaniach dotyczących klasyfikacji obrazu wykorzystywaliśmy prosty zbiór danych i sieć LeNet. Teraz zamień zbiór danych na bardziej skomplikowany, np. ten lub ten (lub inny o podobnym poziomie trudności) i zamiast prostej sieci LeNet użyj bardziej złożonej, np. AlexNet, ResNet, MobileNetV2.

In [ ]: